HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在Swift中将UIImage转换为UInt8数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所有!

我一直在对此进行大量研究,并且已经将几种不同的解决方案集成到我的项目中,但它们似乎都没有.我目前的解决方案是从this thread借来的.

但是,当我运行我的代码时,会发生两件事:

>像素阵列保持初始化但未填充(全0)
>我得到两个错误

CGBitmapContextCreate:不支持的参数组合:设置CGBITMAP_COntexT_LOG_ERRORS环境变量以查看详细信息

CGContextDrawImage: invalid context 0x0. If you want to see the BACktrace,please set

有任何想法吗?这是我当前构建的函数,我正在调用我的Image类

init?(fromImage image: UIImage!) {
    let imageRef = image!.CGImage
    self.width = CGImageGetWidth(imageRef)
    self.height = CGImageGetHeight(imageRef)
    let colorspace = CGColorSpaceCreateDeviceRGB()
    let bytesPerRow = (4 * width);
    let bitsPerComponent :UInt = 8
    let pixels = UnsafeMutablePointer<UInt8>(malloc(width*height*4))

    var context = CGBitmapContextCreate(pixels,width,height,Int(bitsPerComponent),bytesPerRow,colorspace,0);

    CGContextDrawImage(context,CGRectMake(0,CGFloat(width),CGFloat(height)),imageRef)

任何指针都会有很大的帮助,因为我不熟悉所有这些CGBitmap的工作原理.

万分感谢!

解决方法

您不应该将0作为CGBitmapContextCreate的bitmapInfo参数传递.对于RGBA,您将传递CGImageAlphaInfo.PremultipliedLast.rawValue.

支持的bitsPerComponent,colorspace和bitmapInfo组合可以在这里找到:
 https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_context/dq_context.html#//apple_ref/doc/uid/TP30001066-CH203-BCIBHHBB

请注意,每像素32位(bpp)是每像素4个字节,您可以使用它来计算bytesPerRow

大佬总结

以上是大佬教程为你收集整理的ios – 在Swift中将UIImage转换为UInt8数组全部内容,希望文章能够帮你解决ios – 在Swift中将UIImage转换为UInt8数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。