Ios 将CGImage保存到PNG文件,alpha值保持不变

Ios 将CGImage保存到PNG文件,alpha值保持不变,ios,swift,uikit,core-graphics,Ios,Swift,Uikit,Core Graphics,我有一个表示RGBA值的字节数组,我想将其保存为图像(例如PNG文件)保存到文件中 我有一些非常简单的代码,几乎可以满足我的需要: let data:CGDataProvider=CGDataProviderCreateWithCFData(NSData(字节:rawDataOut,长度:rawDataOut.count))! 让bitmapInfo:CGBitmapInfo=[CGBitmapInfo.ByteOrderDefault,CGBitmapInfo(rawValue:CGImage

我有一个表示RGBA值的字节数组,我想将其保存为图像(例如PNG文件)保存到文件中

我有一些非常简单的代码,几乎可以满足我的需要:

let data:CGDataProvider=CGDataProviderCreateWithCFData(NSData(字节:rawDataOut,长度:rawDataOut.count))!
让bitmapInfo:CGBitmapInfo=[CGBitmapInfo.ByteOrderDefault,CGBitmapInfo(rawValue:CGImageAlphaInfo.Last.rawValue)]
让结果:CGImage=CGImageCreate(宽度、高度、bitsPerComponent、bitsPerPixel、bytesPerRow、CGColorSpaceCreateDeviceRGB()、bitmapInfo、数据、零、假、CGColorRenderingIntent.RenderingIntentDefault)!
让image:UIImage=UIImage(CGImage:result)
UIImageWriteToSavedPhotosAlbum(图像,无,无,无)
但我丢失了信息,即生成的PNG文件显示了渲染到白色背景上的图像,因此不再透明。例如,我的字节数组的前四个字节都是
0x00
(黑色透明像素),但在生成的PNG中是白色不透明像素


如何将像素阵列保存为PNG,且不含不透明度信息?

只是一个小游戏,如果使用:let bitmapInfo:CGBitmapInfo=CGBitmapInfo.AlphaInfoMask会发生什么情况:“cImageCreate:invalid image alphaInfo:31”嗯,好吧,对此一无所知-阅读,也许ByteOrder32Big对你更有效,不知道ByteOrderDefault是做什么的。只是一个小游戏,如果你使用:let bitmapInfo:CGBitmapInfo=CGBitmapInfo.AlphaInfoMask会发生什么情况:“CGImageCreate:invalid image alphaInfo:31”嗯,好吧,完全不知道这个-阅读,也许ByteOrder32Big会对你更好,不知道ByteOrderDefault会做什么。