2016-10-10 2 views
1

현재 CoreImage에서 GPUImage로 코드를 이식하고 처리 된 파일을 디스크에 저장하는 데 문제가 있습니다. GPUImage에 이식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) 

다음 코드 :이 CoreImage에 함께 작업하는 동안

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

답변

2

filteredImage가 NSImage입니다 :

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) 

은 마지막 줄에 관한 다음과 같은 오류 메시지를 제공합니다. 핵심 이미지 코드에서 ciImage은 잘 CIImage입니다. CIImage는 extent 속성을 가지고 있지만 NSImage는 그렇지 않습니다.

두 번째 코드에 nsImage을 만들 필요가 없습니다. filteredImage은 이미 NSImage입니다. 너 끝났어.

관련 문제