2012-08-16 76 views
0

我有一個愚蠢的問題。我想加載一個JPEG文件並做一些圖像處理。在處理過程中,圖像文件必須以pixel = by-pixel(無符號字符*)或格式.bmp。我想知道我該怎麼做?從iOS的iOS圖像處理

經過處理後,我想將這個文件保存爲.bmp或.jpg,我該怎麼做? 非常感謝,併爲我可憐的英語感到難過。

+0

看看這個SO問題[如何獲取在iPhone上的圖像上的像素的RGB值](http://stackoverflow.com/questions/144250/how-to-get-the-rgb - 值得一個像素的圖像在iphone上) – alex 2012-08-16 07:52:41

+0

正如alex指出的,你可以加載你的JPEG到UIImage並按照上面的答案。完成後,您可以從中創建UIImage,並使用其中一個輔助函數從中製作JPEG或PNG。 – 2012-08-16 16:05:35

回答

0

鏈接int的評論是有用的,但不完全是我想你想要做的。你將不得不閱讀關於Quartz的一些信息,蘋果的繪圖和圖像處理技術。蘋果公司在這方面有很好的文檔,但它不是一個簡單的一小時類型的工作 - 計劃至少一天或更多。

假設你開始一個UIImage(我猜,它不是所有的關鍵):

  • 獲得CGImageRef到該圖像(可能是[的UIImage CGImage])

  • 創建CGBitMapContext這是足夠大,以呈現該圖像(你可以問一個CGImage的寬度和高度等)。

  • 如果你想最終創建一個帶有alpha的PNG,你將需要創建一個足夠大的alpha位圖上下文,即使JPEG圖像沒有它。如果你想要另一個JPEG,你的工作會更容易一些。

  • 圖像渲染爲位圖上下文(有一個CGContextDraw爲...常規)

現在你的圖像包含在一個位圖,您可以讀取和修改。除非您指定了alpha,否則佈局可能是r-g-b,在這種情況下,您將必須確定alpha字節的位置。

修改位圖後,您可以從該位圖創建一個新的CGImage,並且如果需要,可以獲得一個UIImage。 PS:如果你搜索,你會發現很多示例代碼和發佈這個,所以你不會完全靠自己。