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

ImageProcessor - Resize to a specified width (automatic height)

我在我的应用程序中使用 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)

但是我在size参数中只有Width(我希望自动计算高度)

问题

如何使用 ImageProcessor 将图像 (byte[]) 调整为特定 Width 并保持宽高比?

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

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