2013-01-15 87 views
1

我在設備相機的圖像上運行多個CoreImage濾鏡,並遇到意外的麻煩,將結果保存到相機膠捲。我的圖像處理結果爲CIImage,我可以保存到ALAssetsLibrary的數據類型爲CGImageRefNSData(分別通過writeImageToSavedPhotosAlbum:metadata:completionBlock:writeImageDataToSavedPhotosAlbum:metadata:completionBlock:)。iOS將CIImage保存到相機膠捲

似乎是一個簡單的任務,但我不能找到轉換我CIImage到可以寫入到照片庫中的可用數據類型(與JPEG壓縮)工作方式。

編輯:我想保存圖像元數據,以便排除一些簡單的UIImage保存技術。

回答

1

試試這個:

-(void)storeImage:(CIImage*)_image 
    CGImageRef cgImg = [context createCGImage:_image fromRect:[_image extent]]; 
    ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init]; 
    [library writeImageToSavedPhotosAlbum:cgImg 
           metadata:[_image properties] 
         completionBlock:^(NSURL *assetURL, NSError *error) { 
          CGImageRelease(cgImg); 
         }]; 
0

很簡單,創建一個UIImage對象並使用initWithCIImage:。然後,您可以將新的UIImage傳遞到UIImageWriteToSavedPhotosAlbum()

UIImage *image = [[UIImage alloc] initWithCIImage:myCIImage]; 
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 
+0

那種作品,但在一個非常基本的水平 - 這種方法不支持保存圖像元數據,不像'writeImageToSavedPhotosAlbum:元數據:completionBlock'其基於NSData的兄弟。 – SaltyNuts

+0

我想在iOS 9中確切的方法,它不工作。 –

+0

如果圖像非常大,這也需要更多的內存 –

相關問題