2010-05-12 57 views

回答

1
CGImageCreateWithMaskingColors 

一個UIImage包裝一個CGImage。取CGImage,通過CGImageCreateWithMaskingColors運行它,然後從結果中創建一個新的UIImage或者將結果返回給UIImage。

+0

感謝您的支持!我對函數的參數有些困惑,特別是「components」數組。什麼是適當的CGFloat值來填補這一點?該文檔提到了浮點像素組件與整數像素組件。我如何確定這一點,哪些值代表白色? 再次感謝! – 2010-05-12 05:31:37

+0

這一切都取決於圖像。對於rgb png或jpg,最可能的白色應該是255,255,255。您可以使用'CGImageGetBitmapInfo','CGImageGetBitsPerPixel'和'CGImageGetBitsPerComponent'來弄清楚更多。 – drawnonward 2010-05-12 05:58:48

+0

很多人非常感謝您的幫助!這太棒了! 對於未來的人,我使用了:{0xEE,0xFF,0xEE,0xFF,0xEE,0xFF} 十六進制,這是晚餐。 – 2010-05-14 21:32:14

1

第一步是您需要定義某種「距離」函數來確定像素距離白色有多遠。然後,您需要定義一個距離閾值,低於該閾值時,像素將被視爲白色。然後,您需要遍歷圖像的像素,根據距離和閾值將任何被視爲白色的像素更改爲透明。主要技巧,使這種效率...通過函數觸摸像素將非常緩慢;你最好的選擇就是通過訪問像素所在的內存緩衝區並通過這些內存緩衝區來直接觸摸像素。

+0

你知道在iPhone OS中可以做到這一點的功能嗎?我不知道是否直接內存緩衝區訪問甚至可能... – 2010-05-12 04:20:22

+0

@Peter,對不起,不是真的......我自己的方法是將圖像發送到Web服務,在Web服務上處理它,然後返回圖像。任何將要進行圖像處理的東西都會相當計算密集,並且對於電池壽命來說不是太好。 – 2010-05-12 04:25:09