2014-09-12 62 views
0

在我的finishContentEditingWithCompletionHandler方法爲我的照片編輯擴展我能夠正確過濾GPUimage並保存圖像不被相機拍攝。但是當我使用相機拍攝照片,然後使用我的照片編輯擴展名並點擊「完成」時,擴展程序就會在活動微調器正在進入的黑屏上。有其他人遇到過這個問題嗎?我使用GPUImage來過濾我的圖像。iOS 8 GPUimage崩潰在自定義照片擴展

+0

我們遇到過同樣的問題。有時它實際上會完成,並且就好像你永遠不會改變圖像一樣。我們通過保存到一個文件來確認,我們確實將過濾後的圖像傳回OS。只有當我們使用相機的全分辨率照片時,纔會發生這種情況。 – Xials 2014-09-18 17:45:50

+0

我同意,似乎只發生在相機照片上。如果你用[[GPUImagePicture alloc] initWithImage:image freelyScaleOutput:YES]來初始化;然後,它肯定崩潰,但有時我可以用[[GPUImagePicture alloc] initWithImage:image]獲取相機拍照;然後添加其他效果,如銳化/小插曲等。但大部分時間它仍然崩潰。自從你回覆以後,你有沒有碰到過這種情況?我真的想繼續使用GPUImage,但是如果它像這樣一直崩潰,我不能釋放它,並且必須找到另一種處理過濾器的方法。 – inks2002 2014-09-23 14:43:48

+0

即使我沒有使用GPUImage,但我自己的OpenGL管道,我也會遇到同樣的問題。由於內存壓力過高,延期似乎被打死。對於照片擴展的限制要低得多 - 或者讓我們說低得離譜。在我的應用程序中,我能夠毫無問題地處理8個MP圖像;在擴展中,我需要將它們縮小到1/2 MP(取決於設備),以便使其無崩潰地工作。 – 2014-10-16 08:30:58

回答

1

我的自定義照片擴展名有類似的問題。通過一些調查,我發現只有具有UIImageOrientation.Up的圖像才能被正確過濾並正確寫回。我最終刪除了UIImage的方向信息,它適用於所有圖像方向。

// Remove orientation information 
UIGraphicsBeginImageContextWithOptions(finalFilteredImage.size, true, finalFilteredImage.scale) 
finalFilteredImage.drawInRect(CGRectMake(0, 0, finalFilteredImage.size.width, finalFilteredImage.size.height)) 
let finalImage = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext(); 
+0

這工作,直到我試過一個肖像圖像。 – Xials 2014-11-10 23:13:49