我正在使用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,不应该做 为什么这样做???
答案 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);
或使用其他一种调整大小模式:裁剪/最小/最大/拉伸