2009-12-14 37 views
3

我使用UIGraphicsGetImageFromCurrentImageContext()函數將屏幕內容捕獲到UIImage對象(先前渲染到Image上下文中)。這對模擬器和真實設備都工作的很好,但是在後者所產生的圖像與失真的色彩幾個像素,如下所示:捕獲的UIView圖像有扭曲的顏色(iPhone SDK)

http://img300.imageshack.us/img300/2788/screencap.png

請在頂部導航注意到幾個fucsia像素欄,在搜索字段的兩側和按鈕的右側。左下角按鈕右側也有這樣的像素。

我使用捕捉屏幕視圖到UIImage對象的代碼是非常簡單的:

UIGraphicsBeginImageContext(self.view.window.frame.size); 
[self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *anImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

有一點要注意的是,所有得到扭曲的圖形屬於定製PNG文件,用來繪製搜索字段背景以及按鈕背景。

有誰知道什麼可能導致這種奇怪的顏色失真?

最好的問候,

回答

1

只是檢查了我自己的代碼,做你是同樣的事情。你幾乎等同於我的,只是我問視圖的層來呈現,而不是窗口的,即:

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

我不知道爲什麼會有所作爲,但它是值得一試。

0

UIGetScreenImage()是很煩人的,當你只是想捕捉的視圖。 我發現了一個很不錯的技巧,只是用Preview.app :)

1

本文介紹用圖像損壞(由於部分透明的像素)的問題,重新保存所有的PNG圖像爲TIFF格式,並提供了證實克里斯的解決方法評論:

http://www.kaoma.net/iphone/?p=9