求Xamarin/Xamarin.iOS中UWP BitMapEncoder的等效替代工具
替代UWP BitmapEncoder的Xamarin方案
嗨,刚好之前在Xamarin项目里找过UWP BitmapEncoder的替代方案,给你几个实用的选项,应该能解决你的问题:
SkiaSharp(跨平台首选)
这是我最推荐的方案,SkiaSharp是谷歌Skia图形库的.NET绑定,完美支持Xamarin全平台(Forms/iOS/Android/UWP都能用),它的图片编码逻辑和UWP BitmapEncoder非常接近,而且API简洁直观。举个快速编码的示例:
using SkiaSharp; using System.IO; // 假设你已经获取到SKBitmap实例(可从文件、流、资源加载) using (var outputStream = new MemoryStream()) { // 编码为PNG格式,第二个参数是质量(0-100),也可选择JPEG、WebP等格式 yourBitmap.Encode(outputStream, SKEncodedImageFormat.Png, 100); // 将编码后的流写入文件或其他目标 outputStream.Position = 0; using (var fileStream = File.OpenWrite("encoded_image.png")) { outputStream.CopyTo(fileStream); } }它支持几乎所有主流图片格式,跨平台复用性强,不用写多套平台特定代码。
平台原生API(针对单一平台场景)
如果你的项目只需要适配特定平台,也可以直接调用对应平台的原生图片编码API,性能会更贴近原生:- Android平台:使用
Android.Graphics.Bitmap的Compress方法:using Android.Graphics; using System.IO; // 假设已有Android原生Bitmap对象 using (var stream = new MemoryStream()) { bitmap.Compress(Bitmap.CompressFormat.Png, 100, stream); // 后续处理流即可 } - iOS平台:使用
UIImage的AsPNG()或AsJPEG()方法:using UIKit; using System.IO; // 假设已有iOS原生UIImage对象 var imageData = yourImage.AsPNG(); // 或 AsJPEG(1.0f) 控制质量 using (var stream = imageData.AsStream()) { // 处理编码后的流 }
- Android平台:使用
如果是Xamarin.Forms跨平台项目,优先选SkiaSharp,能省不少平台适配的功夫~
内容的提问来源于stack exchange,提问作者oscar ramos
相关产品推荐
相关产品推荐

