从 Swift 中的小图像生成纹理 UIImage

Generate texture UIImage from small image in Swift

我想创建一个全尺寸纹理图像,比方说从现有 UIImage 尺寸 40 x 40 的 1000 x 1000。

我用来创建图像的代码是

let textureImg = UIImage(CGImage: CGImageCreateWithImageInRect(textureImage?.CGImage, CGRect(origin: CGPointZero, size: CGSizeMake(1000, 1000)))!)

其中 textureImage 是一些 40x40 的图像。

请告诉我实现此目的的任何正确方法,因为上面的代码没有给出正确的结果。整个图像变白了。

以下是如何使用 CIAffineTile 将 40x40 的图像平铺成 500x500 的图像。请注意,我正在做一些不必要的强制展开等,因为我从现有代码中提取了它。这是测试过的。

let inputImage = UIImage(named: "vermont.jpg")
let tiledImage = createTiledImage(inputImage:inputImage!)
print(inputImage!.size)  // displays (40.0, 40.0)
print(tiledImage.size)   // displays (500.0,500.0)
imageView.image = tiledImage

func createTiledImage(inputImage:UIImage) -> UIImage {
    let filter = CIFilter(name: "CIAffineTile")
    filter!.setValue(CIImage(image: inputImage), forKey: "inputImage")
    let outputImage = filter?.outputImage?.applyingFilter("CIAffineTile", withInputParameters: nil).cropping(to: CGRect(x: 0, y: 0, width: 500, height: 500))
    let ciCtx = CIContext(options: nil)
    let cgimg = ciCtx.createCGImage(outputImage!, from: (outputImage?.extent)!)
    return UIImage(cgImage: cgimg!)
}