2017-02-15 7 views
0

の小さな画像からテクスチャUIImageを生成することは、私はイメージを作成するために使用していたコードが私はフルサイズのテクスチャ画像を作成したいスウィフト

あるサイズの既存の UIImage 40×40

から×1000 1000言うことができます

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

ここで、textureImageは40x40の画像です。

正しい結果が得られていない上記のコードでこれを達成する正しい方法を教えてください。画像全体が白くなります。

+0

テクスチャでは、「タイル」を意味しますか?その場合は、CIAffineTile(https://developer.apple.com/library/content/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIAffineTile)を参照してください。あなたのためにいくつかのコードが必要な場合は、私に教えてください。 – dfd

+0

'let textureImg = UIImage(color:UIColor(patternImage:textureImage!)、size:CGSizeMake(300、300))!'は 'CIAffineTile'と同じようにタイル画像を生成するのに問題ありません。しかし、私はCIAffineTileを適切に実装することができませんでした。その例は大きな助けになります。 –

答えて

0

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!) 
}