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

时间:2016-03-18 08:58:11

标签: ios swift uikit core-graphics

我有一个字节数组,表示我想要保存为文件的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,不透明度信息完好无损?

0 个答案:

没有答案