【问题标题】:UIImage change raw pixels from white to clear?UIImage 将原始像素从白色更改为清晰?
【发布时间】: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 的原始数据并将白色像素更改为清除?

【问题讨论】:

标签: cocoa-touch uiimage uikit core-graphics


【解决方案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 中创建遮罩图像。

一旦你解决了这两个问题,这个答案可能就可以正常工作了。

【讨论】:

    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 2012-03-16
    • 2018-10-26
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    相关资源
    最近更新 更多