我有一个字节数组,表示我想要保存为文件的RGBA值(例如PNG文件)。
我有一些非常简单的代码几乎可以实现我的需求:
let data:CGDataProvider = CGDataProviderCreateWithCFData(NSData(bytes: rawDataOut, length: rawDataOut.count))!
let bitmapInfo:CGBitmapInfo = [CGBitmapInfo.ByteOrderDefault, CGBitmapInfo(rawValue: CGImageAlphaInfo.Last.rawValue)]
let result:CGImage = CGImageCreate(width, height, bitsPerComponent, bitsPerPixel, bytesPerRow, CGColorSpaceCreateDeviceRGB(), bitmapInfo, data, nil, false, CGColorRenderingIntent.RenderingIntentDefault)!
let image:UIImage = UIImage(CGImage: result)
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
但我丢失信息,即生成的PNG文件显示渲染到白色背景上的图像,因此不再透明。例如,我的字节数组的前四个字节都是0x00
(黑色透明像素),但在生成的PNG中,它是一个白色不透明像素。
如何将像素阵列保存到PNG,不透明度信息完好无损?