2013-08-07 26 views
0

我有一張圖片用於創建浮雕,將其分解爲單獨的紅色和青色版本,並在它們之間設置視差。從UIImage中移除顏色的最快方法?

源圖像是1146 x 580(視網膜分辨率)。我使用CIColorMatrix創建每個圖像。這裏是青色版本的代碼,它刪除所有的紅色。

-(UIImage *)createCyan:(UIImage *)anImage 
{ 

    CIImage *inputImage = [CIImage imageWithCGImage:anImage.CGImage]; 

    CIFilter *matrixFilter = [CIFilter filterWithName:@"CIColorMatrix"]; 
    [matrixFilter setDefaults]; 
    [matrixFilter setValue:inputImage forKey:kCIInputImageKey]; 
    [matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:0] forKey:@"inputRVector"]; 
    [matrixFilter setValue:[CIVector vectorWithX:0 Y:1 Z:0 W:0] forKey:@"inputGVector"]; 
    [matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:1 W:0] forKey:@"inputBVector"]; 
    [matrixFilter setValue:[CIVector vectorWithX:0 Y:0 Z:0 W:1] forKey:@"inputAVector"]; 

    CIImage *outputImage = [matrixFilter outputImage]; 

    CIContext *context = [CIContext contextWithOptions:nil]; 
    CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]]; 

    return [UIImage imageWithCGImage:cgimg]; 
} 

問題是,這需要一秒鐘以上的處理。我需要找到一個更快的方法(如果存在的話)完成同樣的事情。

有沒有更好的方法?

+1

你可以創建一個彩色立方體來做到這一點嗎?一般來說,有關於CIFilters和Core Image的WWDC 2013(或2012)視頻。他們展示了一些很酷的方法,通過創建自己的顏色映射而不是使用內置映射來加速圖像處理。 – Fogmeister

+0

謝謝。我會看一看。 –

+1

@Fogmeister,你的意思是從2012年的會議511.這是非常好的。 https://developer.apple.com/videos/wwdc/2012/?id=511核心圖像技術 –

回答

0

速度問題並不是過濾器,而是您重複初始化一個非常昂貴的過程CIContext。事先創建CIContext,並解決您的問題。

相關問題