gpt4 book ai didi

ios - 如何最好地将原始像素数据转换为 PNG 文件?

转载 作者:行者123 更新时间:2023-11-28 19:56:55 25 4
gpt4 key购买 nike

(我正在开发一个针对 iOS 的 Xamarin.Forms 项目,但我觉得我需要使用 monotuch 来实现我的目标。)

我有一个从函数中获取的数组,这个数组表示一些我想保存并稍后显示的位图数据。我一直在查看文档,但没有看到从字节到位图再到文件的路径像我期望的那样清晰。在 WinForms 中,我会创建一个 System.Drawing.Bitmap,然后使用 Save() 方法。在 Xamarin for Android 中,Android.Graphics.Bitmap 有一个 Compress() 方法,可以让我输出到流中。我无法弄清楚 Xamarin iOS 中的等效项是什么。

像素数据是每个像素32位,每个分量8位,ARGB。我已经弄清楚我可以从中创建一个 CGImage,目前是通过 CGBitmapContext。我可以从中得到一个 UIImage,但下一个明确的方法是 UIImage.SaveToPhotoStream(),这不是我想要做的。我看到 AsPng() 返回一个 NSData,这似乎是一种可行的方法。我还没有完全让它工作(因为出于某种原因,提供者决定输出 int[] 而不是 byte[]),但我很好奇:是否有更简单的方法将原始像素数据转换为 PNG 文件?

最佳答案

您可以使用 ImageIO 来更好地控制要序列化的内容。

不过,您仍然需要为自己准备一个 CGImage 才能使用。

使用三个 CGImageDestination.Create 重载之一来选择您要生成的输出类型(保存到 NSMutableData 对象、NSUrl 或您自己的数据提供程序),添加图像,然后关闭 CGImageDestination .

像这样:

var storage = new NSMutableData ()
var dest = CGImageDestination.Create (storage, MobileCoreServices.UTType.PNG, imageCount: 1);
dest.AddImage (yourImage);
dest.Close (); // This saves the data

如果要创建多帧图像,可以将Create中imageCount的参数改为其他数字,这样也会重复调用AddImage。

关于ios - 如何最好地将原始像素数据转换为 PNG 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26000457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com