【问题标题】:Azure webjob image resize issueAzure webjob 图像调整大小问题
【发布时间】:2016-12-20 13:09:31
【问题描述】:

我正在使用 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 不应该这样做 为什么这样做???

【问题讨论】:

  • 可能是源图像不是方形的,但您试图将其调整为方形尺寸并且函数试图保持原始纵横比?
  • 您的图片尺寸为 500x375。不确定您如何期望在没有任何类型的条的情况下正确生成 200x200 缩略图。无论如何:这不是数据库问题(而且似乎也不是编程问题)。
  • @DavidMakogon 抱歉标头写错了
  • @DavidMakogon 酒吧是什么意思??
  • @Moustafa 我说的是你提到的“尾随黑色区域”。或者...黑条,因为它们通常被称为。

标签: azure azure-webjobs


【解决方案1】:

您正在尝试将矩形放入正方形中。

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

调整大小

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

public ImageFactory Resize(Size size)

参数

尺寸

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

所以,传入0 作为高度以保持纵横比,

Size size = new Size(200, 0);

或使用其他调整大小模式之一:Crop/Min/Max/Stretch

【讨论】:

  • 非常感谢您的详细回答:)
猜你喜欢
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 2012-10-17
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多