Re: 快速从 UIImage/CGImage 获取像素数据作为数组
Posted
技术标签:
【中文标题】Re: 快速从 UIImage/CGImage 获取像素数据作为数组【英文标题】:Re: Get pixel data as array from UIImage/CGImage in swift 【发布时间】:2016-03-11 15:55:13 【问题描述】:此代码在灰度中适用于我(Swift 2 游乐场),加载彩色 .BMP 图像...
Get pixel data as array from UIImage/CGImage in swift
...但是如果我将 bytesPerPixel
更改为 3(或 4)并使用
let colorSpace = CGColorSpaceCreateDeviceRGB()
...代码仍然可以正常运行,但像素值全为零。有关如何解决此问题的任何建议?
【问题讨论】:
别管其他帖子怎么说。请发布您开始使用的图片的链接,并完整显示您正在使用的实际代码。 【参考方案1】:您可能忘记了 CGImageAlphaInfo 参数。对于彩色图像,如果假设 bytesPerPixel
为 4,则需要在创建上下文时设置 RGBA(或 ARGB)。以下是没有 Alpha 通道的 RGBA 示例。
// RGBA format
let ctx = CGBitmapContextCreate(&data, pixelsWide, pixelsHigh, 8,
bitmapBytesPerRow, colorSpace, CGImageAlphaInfo.NoneSkipLast.rawValue)
根据文档,您有以下选择:
enum CGImageAlphaInfo : UInt32
case None
case PremultipliedLast
case PremultipliedFirst
case Last
case First
case NoneSkipLast
case NoneSkipFirst
case Only
【讨论】:
谢谢大千。我知道 alpha 是问题所在,我找到了参数,但不知道关键的 .rawvalue! :-)以上是关于Re: 快速从 UIImage/CGImage 获取像素数据作为数组的主要内容,如果未能解决你的问题,请参考以下文章
在swift中从UIImage / CGImage获取像素数据作为数组
来自 UIImage 或来自文件的 vImage - Swift 和 Accelerate 框架