我尝试了以下每个问题的代码:
How to make one color transparent on a UIImage?
How to mask a UIImage so that white becomes transparent on iphone?
但是不成功,不幸的是与Core Graphics合作并且图像并不是我的强项。
我如何访问UIImage的原始数据并更改白色像素以清除?
答案 0 :(得分:1)
我如何访问UIImage的原始数据......?
您会发现无法获取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。{/ 3>}中包含更多详细信息
我还反对包含该答案的createMask:
方法,因为它没有按照它所说的那样做,而且几乎没用(如果源图像可能是CMYK,那么它是值得拥有的,但是有多大可能是在iPhone应用程序?)。跳过它并直接从UIImage的CGImage创建掩码图像。
一旦你解决了这两个问题,这个答案可能会很好。