You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求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())
      {
          // 处理编码后的流
      }
      

如果是Xamarin.Forms跨平台项目,优先选SkiaSharp,能省不少平台适配的功夫~

内容的提问来源于stack exchange,提问作者oscar ramos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:30:40