UIImage 将原始像素从白色更改为清晰?
Posted
技术标签:
【中文标题】UIImage 将原始像素从白色更改为清晰?【英文标题】:UIImage change raw pixels from white to clear? 【发布时间】:2010-04-16 03:49:17 【问题描述】:我已经尝试了以下每个问题的一些代码:
How to make one color transparent on a UIImage?
How to mask a UIImage so that white becomes transparent on iphone?
但没有成功,不幸的是,使用 Core Graphics 和图像并不是我的强项。
我将如何访问 UIImage 的原始数据并将白色像素更改为清除?
【问题讨论】:
Replace a particular color inside an image with another color的可能重复 【参考方案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 中创建遮罩图像。
一旦你解决了这两个问题,这个答案可能就可以正常工作了。
【讨论】:
以上是关于UIImage 将原始像素从白色更改为清晰?的主要内容,如果未能解决你的问题,请参考以下文章
Re: 快速从 UIImage/CGImage 获取像素数据作为数组