ImageProcessor - 调整大小到指定的宽度(自动高度)

时间:2017-02-27 16:52:27

标签: c# imageprocessor

我在我的应用程序中使用ImageProcessor库。

我使用此代码以调整给定的特定尺寸(宽度+高度):

 public static byte[] ResizeImage(byte[] inputFileBytes, int w, int h, ResizeMode resizeMode)
        {
            byte[] photoBytes = inputFileBytes; 

            ISupportedImageFormat format = new JpegFormat { Quality = 70, IsIndexed = false };
            Size size = new Size(w, h);
            using (MemoryStream inStream = new MemoryStream(photoBytes))
            using (MemoryStream outStream = new MemoryStream())
            {

                using (ImageFactory imageFactory = new ImageFactory(preserveExifData: false))
                {
                    var r = new ResizeLayer(size, resizeMode);

                    imageFactory.Load(inStream)
                        .Resize(r)
                        .Format(format)
                        .Save(outStream);
                }


                return outStream.ToArray();
            }
        }

我通过(这是一个裁剪示例)调用它:

   byte[] servedImage =  ResizeImage(byteArray,[...imgWidth...],
                       [...imgHeight...],ResizeMode.Crop);

这一切都很好。

但现在我需要将图像调整为特定的 width - 我希望高度成比例。

我已经知道Resize method有一个过载:

public ImageFactory Resize(Size size)

但我只有Width param中的size(我希望自动计算高度)

问题

如何将图像(byte[])的大小调整为特定的Width,并使用ImageProcessor维护宽高比?

1 个答案:

答案 0 :(得分:2)

根据您尝试实现的裁剪/拉伸行为设置ResizeMode。该库旨在根据ResizeMode的选择值自动适应宽高比的差异。

如果您想要自动计算高度,请在尺寸中为高度传递0。