2016-10-10 8 views
1

現在、CoreImageからGPUImageにコードを移植していて、処理されたファイルをディスクに保存する際に問題があります。これはCoreImageで働いている間:MacOSのGPUImage - 処理されたファイルをディスクに保存する方法

guard 
    let blurFilter = CIFilter(name: "CIGaussianBlur"), 
    let imageURL = Bundle.main.url(forResource: "my-image", withExtension: "png"), 
    let ciImage = CIImage(contentsOf: imageURL) 
else { 
    return 
} 

blurFilter.setValue(ciImage, forKey: kCIInputImageKey) 
blurFilter.setValue(100, forKey: kCIInputRadiusKey) 

guard 
    let result = blurFilter.outputImage, 
    let cgImage = context.createCGImage(result, from: result.extent) 
else { 
    return 
} 

let destinationURL = desktopURL.appendingPathComponent("output.png") 
let nsImage = NSImage(cgImage: cgImage, size: ciImage.extent.size) 

GPUImageに移植され、次のコード:

let testImage = NSImage(named:"my-image.png")! 
let blurFilter = GaussianBlur() 
let filteredImage = testImage.filterWithOperation(blurFilter) 

let desktopURL = FileManager.default.urls(for: .desktopDirectory, in: .userDomainMask).first! 
let destinationURL = desktopURL.appendingPathComponent("output.png") 
let nsImage = NSImage(nsImage: filteredImage, size: filteredImage.extent.size) 

は、最後の行に関連する次のエラーメッセージを表示します。

Value type of 'NSImage' has no member 'extent' 

答えて

2

filteredImageはNSImageではあります。あなたのコアイメージコードでは、ciImageは、まあ、CIImageです。 CIImageにはextentというプロパティがありますが、NSImageにはありません。

nsImageを2番目のコードに作成する必要はありません。filteredImageはすでにNSImageです。あなたは終わった。