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 获取像素数据作为数组

从 cvMat 转换为 UIImage 会改变图像

尝试在给定阈值处将所有像素更改为黑白

如何使用带有c ++的opencv库将下图中的黑色像素更改为红色像素

将选取器行标题从黑色更改为白色