我有一個UIImage與白色背景。我想用alpha透明像素替換白色背景/像素。我查看了StackOverflow的其他問題以及Quartz文檔,但尚未找到針對此問題的一致「開始 - 結束」。這是如何完成的?使用CGImage替換UIImage中的所有白色/接近白色像素?
回答
CGImageCreateWithMaskingColors
一個UIImage包裝一個CGImage。取CGImage,通過CGImageCreateWithMaskingColors運行它,然後從結果中創建一個新的UIImage或者將結果返回給UIImage。
第一步是您需要定義某種「距離」函數來確定像素距離白色有多遠。然後,您需要定義一個距離閾值,低於該閾值時,像素將被視爲白色。然後,您需要遍歷圖像的像素,根據距離和閾值將任何被視爲白色的像素更改爲透明。主要技巧,使這種效率...通過函數觸摸像素將非常緩慢;你最好的選擇就是通過訪問像素所在的內存緩衝區並通過這些內存緩衝區來直接觸摸像素。
你知道在iPhone OS中可以做到這一點的功能嗎?我不知道是否直接內存緩衝區訪問甚至可能... – 2010-05-12 04:20:22
@Peter,對不起,不是真的......我自己的方法是將圖像發送到Web服務,在Web服務上處理它,然後返回圖像。任何將要進行圖像處理的東西都會相當計算密集,並且對於電池壽命來說不是太好。 – 2010-05-12 04:25:09
- 1. 查找/枚舉CGImage中的所有非白色像素?
- 2. 剪出圖像中的所有白色
- 3. ImageMagick,用不透明白色替換半透明白色
- 4. 使用PIL使所有白色像素透明?
- 5. 替換白色間距
- 6. UIImage的透明色爲白色
- 7. 用iOS中的白色像素替換部分像素緩衝區
- 8. 如何使用ImageMagick替換圖像中的白色矩形?
- 9. WebBrowser.DrawToBitmap留下白色像素
- 10. 如何創建空白/空白UIImage或CGImage並操作其上的像素(Xcode)?
- 11. 從RGBA UIImage Alpha變白色
- 12. 如何用vim中的四個替換白色空白?
- 13. 如何從UIImage中只提取白色像素?
- 14. 用PNG圖像中的白色替換透明背景
- 15. BufferedImage:設置所有像素爲白色,其中alpha = 0
- 16. UIImage將原始像素從白色變爲清晰?
- 17. 白色不是白色
- 18. 黑白色(像素),請與Cocos2D中
- 19. UITabBarItem中的白色圖像
- 20. swift中的白色背景圖像上的白色文字
- 21. 使圖像變成黑色和白色?
- 22. 轉換UIImage black'n白色,而不是灰度使用tesseract
- 23. 如何在代碼中創建空白以替換白色
- 24. 白色像素的百分比
- 25. OpenCV的分組白色像素
- 26. iOS周圍的白色像素使用CIFilter的圖像
- 27. 如何將UIImage中的顏色「白色」更改爲透明
- 28. 安卓:白色上的白色微調
- 29. 獲取白色像素座標(OpenCV)
- 30. 從黑色和白色1D陣列像素創建圖像
感謝您的支持!我對函數的參數有些困惑,特別是「components」數組。什麼是適當的CGFloat值來填補這一點?該文檔提到了浮點像素組件與整數像素組件。我如何確定這一點,哪些值代表白色? 再次感謝! – 2010-05-12 05:31:37
這一切都取決於圖像。對於rgb png或jpg,最可能的白色應該是255,255,255。您可以使用'CGImageGetBitmapInfo','CGImageGetBitsPerPixel'和'CGImageGetBitsPerComponent'來弄清楚更多。 – drawnonward 2010-05-12 05:58:48
很多人非常感謝您的幫助!這太棒了! 對於未來的人,我使用了:{0xEE,0xFF,0xEE,0xFF,0xEE,0xFF} 十六進制,這是晚餐。 – 2010-05-14 21:32:14