我使用幾個鏈式過濾器生成CIImage,並嘗試在用戶相冊中輸出生成的圖像以用於某些調試目的。我提供給UIImageWriteToSavedPhotosAlbum()
的回調總是返回一個零錯誤,所以我認爲沒有任何問題。但圖像從未出現。使用CIImage時,爲什麼UIImageWriteToSavedPhotosAlbum()不工作?
我以前用過這個函數將OpenGL緩衝區轉儲到相冊進行調試,但是我意識到這不是一回事。我應該做一些不同的事情嗎?
-(void)cropAndSaveImage:(CIImage *)inputImage fromFeature:(CIFaceFeature *)feature
{
// First crop out the face.
[_cropFilter setValue:inputImage forKey:@"inputImage"];
[_cropFilter setValue:[CIVector vectorWithCGRect:feature.bounds] forKey:@"inputRectangle"];
CIImage * croppedImage = _cropFilter.outputImage;
__block CIImage * outImage = croppedImage;
dispatch_async(dispatch_get_main_queue(), ^{
UIImage * outUIImage = [UIImage imageWithCIImage:outImage];
UIImageWriteToSavedPhotosAlbum(outUIImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
});
}
-(void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
NSLog(@"debug LBP output face. error: %@", error);
}
我驗證過的界限從來0
回調輸出總是
debug LBP output face. error: (null)
您需要權限才能訪問照片。 [相機膠捲權限](http://stackoverflow.com/questions/13572220/ask-permission-to-access-camera-roll) – Anticro
沒有,這不是。訪問相機膠捲通常是在我的代碼第一次嘗試訪問它時提示的。我想出了實際的問題。看來我需要實際渲染圖像並直接使用CGImageRef來實例化UIImage。不知道爲什麼這是必要的,也許是在iOS 9中的兼容性錯誤或更改?我見過較舊的帖子,暗示我使用的方法是正確的。請參閱下面的答案。 –