0

我在我的应用程序中使用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 方法有一个重载:

public ImageFactory Resize(Size size)

但我只有Widthsize参数中(我希望自动计算高度)

问题

如何使用 ImageProcessor 将 Image( byte[]) 调整为特定的Width,保持纵横比?

4

1 回答 1

3

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

如果要自动计算高度,请为 Size 中的 Height 传递一个 0。

于 2017-02-27T16:56:51.157 回答