Azure webjob图片调整大小问题

时间:2016-12-20 13:09:31

标签: azure azure-webjobs

我正在使用azure web作业来保存图像的拇指,这是执行此操作的代码

ImageProcessor.Imaging.Formats.FormatBase f;
f = new ImageProcessor.Imaging.Formats.JpegFormat();


Size size = new Size(200, 200); 
using (WebClient client = new WebClient())
            {
                MemoryStream stream = new MemoryStream(client.DownloadData(input));
                MemoryStream stream2 = new MemoryStream();
                int quality = 110;


                do
                {
                    quality = quality - 10;
                    using (ImageFactory factory = new ImageFactory(false))
                    {
                        factory.Load(stream)
                            .Format(f)
                            .Resize(size)                          
                            //.BackgroundColor(Color.White)
                            .Quality(quality)
                            .Save(stream2);
                    }
                } while (stream2.Length > stream.Length || stream2.Length ==100000);

例如,当我使用this图像向队列添加消息时, 工作应该给我拇指图像200 * 200,但在结果图像的顶部和底部有一个尾随黑色区域,如this,不应该做 为什么这样做???

1 个答案:

答案 0 :(得分:0)

您正试图将矩形放入正方形。

来自http://imageprocessor.org/imageprocessor/imagefactory/resize/

  

调整大小

     

将当前图像调整为给定尺寸。如果要保留EXIF元数据,则其中包含的信息也将更新以匹配。

     

public ImageFactory Resize(Size size)

     

<强>参数

     

大小

     

System.Drawing.Size包含设置图像的宽度和高度。
  为任一维度传递0将省略该维度。

因此,传递0作为高度以保持宽高比,

Size size = new Size(200, 0);

或使用其他一种调整大小模式:裁剪/最小/最大/拉伸