2009-09-04 52 views
5

我試圖拍攝我應用當前視圖的屏幕截圖,並將其保存到相冊(然後通過電子郵件或MMS'ed)。UIImageWriteToSavedPhotosAlbum保存到錯誤的大小和質量

UIGraphicsBeginImageContext(self.view.bounds.size); 

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

UIImageWriteToSavedPhotosAlbum(viewImage, self, @selector(savedPhotoImage:didFinishSavingWithError:contextInfo:), nil); 

這工作,但所產生的圖像apears要大一些(533x800px),當我從照片庫通過電子郵件發送它嚴重壓縮。

我試過先寫UIImage文件,然後保存到相冊,但仍然得到同樣的問題。

如果我在iPhone上使用內置的屏幕截圖功能,視圖會以320x480正確保存到相冊中,但上面的代碼由於某種原因似乎可以保存更大的圖像?

謝謝!

+0

我應該添加這隻發生在設備上測試時。在模擬器上似乎都很好。 – wuwongy 2009-09-04 13:43:20

回答

1

我有這樣的錯誤,就我而言,當我將小數點四捨五入成與iPhone相同的比例尺時,解決了這個問題,嘗試一下,確保比例是1.0,2.0等,而不是3.1,即會拋棄它。

19

我發現一個體面的解決方法,它基本上將UIImage重新包裝爲PNG,然後保存重新包裝的版本。代碼看起來像這樣:

UIImage* im = [UIImage imageWithCGImage:myCGRef]; // make image from CGRef 
NSData* imdata = UIImagePNGRepresentation (im); // get PNG representation 
UIImage* im2 = [UIImage imageWithData:imdata]; // wrap UIImage around PNG representation 
UIImageWriteToSavedPhotosAlbum(im2, nil, nil, nil); // save to photo album 
+1

這是壓縮問題的解決方案。圖像將作爲PNG存儲在照片庫中。在圖片放入照片庫後通過電子郵件進行測試。 – 2011-03-18 21:00:55