使用SixLabors.ImageSharp 进行图片的缩放C#.net core,可跨平台运行

引用命令空间

using SixLabors.ImageSharp;

using SixLabors.ImageSharp.Formats.Png;

using SixLabors.ImageSharp.Processing;

 

public static vid Resize(byte[] imageBytes,int width=400)
{
    using var steam = new MemoryStream(imageBytes);
    using (var image= Image.Load(stream))
   {
          var ow = image.Width;  
          var oh = image.Height;
          
         // 如何制定宽度大于原图, 使用原图宽度
         float scale = (ow <= width) ? 1 : (width/ow*1.0f);

         // 新的宽度和高度
         int targetWidth = (int) (ow * scale);
         int targetHeight = (int)( oh * scale);

         // 对图像进行调整大小
         image.Mutate(x => x.Resize(
             new ResizeOptions
             {
                  Size = new Size(targetWidth,targetHeight),Mode = ResizeMode.Max
             } 
          ));
           
           // configure the encoder options 
          var encoder = new SixLabors.ImageSharp.Formats.Png.PngEncoder
          {
               CompressionLevel = CompressionLevel.BestCompression
          };

         // compress the thumb and save it as stream

         var saveStream= new System.Io.MemoryStream();
         image.save(saveStream,encoder);
         // image.Save(thumbPath,encoder); 
         return saveStream;

     }

}                        

 

posted @ 2024-08-08 17:47  星辰与大海  阅读(486)  评论(0)    收藏  举报