2010-04-16 52 views
1

我已經嘗試了一些代碼,從每個問題:UIImage將原始像素從白色變爲清晰?

How to make one color transparent on a UIImage?

How to mask a UIImage so that white becomes transparent on iphone?

但都拿出了不成功的,不幸的核心圖形和圖像的工作是不是我的強項。

如何訪問UIImage的原始數據並更改白色像素以清除?

+0

可能的重複[用另一種顏色替換圖像中的特定顏色](https://stackoverflow.com/questions/7171679/replace-a-particular-color-inside-an-image-with-another-color ) – 2017-11-07 09:40:07

回答

1

我該如何去訪問UIImage的原始數據......?

看看the documentation

你會發現無法獲得UIImage後面的原始數據。你可以得到最接近的是CGImage。這會讓你得到它的數據提供者,你可以要求提供一份原始數據。

該解決方案的問題在於,您需要處理CGImage支持的每種可能的配置(RGBA,ARGB,RGB_,_RGB,RGB,8-bpc,16-bpc等)。這是很多的工作。如果你不這樣做,那麼總有一天,你會對某個不適合你的代碼的圖像或者操作系統升級改變CGImage的創建方式感到驚訝。

The CGImageCreateWithMaskingColors function,建議您鏈接到的其他問題之一是正確的解決方案。

有一件事讓你感到沮喪,the accepted answer on that question中顯示的值通常是假的:它們超出範圍。 Quartz 2D Programming Guide至少在two有更多的細節。 places

我也反對包括那個答案的createMask:方法,因爲它沒有做它說的那樣並且幾乎沒有任何用處(只有源圖像可能是CMYK纔有價值,但是有多可能一個iPhone應用程序?)。跳過它並直接從UIImage的CGImage創建遮罩圖像。

一旦你解決了這兩個問題,這個答案很可能會工作得很好。

相關問題