【问题标题】:Re: Get pixel data as array from UIImage/CGImage in swiftRe: 快速从 UIImage/CGImage 获取像素数据作为数组
【发布时间】: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()

...代码仍然可以正常运行,但像素值全为零。有关如何解决此问题的任何建议?

【问题讨论】:

  • 别管其他帖子怎么说。请发布您开始使用的图片的链接,并完整显示正在使用的实际代码。

标签: swift uiimage rgb bmp cgimage


【解决方案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! :-)
猜你喜欢
  • 1970-01-01
  • 2011-08-29
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
相关资源
最近更新 更多