将未知大小的图像调整为特定大小而不变形?

时间:2015-10-24 05:55:45

标签: asp.net-mvc image-resizing

我想从Asp.net MVC中的用户处获取图像并将其调整为特定大小,但我必须将其调整到一定大小而不会变形。我没有问题,如果图像的某些部分被裁剪,但我不想,如果用户上传4000X2000px图像我裁剪600X600的图像并丢失图像的很多部分。

我该怎么做?根据那个算法有什么算法吗?或.net中是否有任何源代码?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案:

               using (var bitmap = new Bitmap(image.InputStream))
                       {
                           var width = bitmap.Width;
                           var height = bitmap.Height;


                           double widthRatio = (double)600 / width;
                           double heightRatio = (double)600 / height;
                           double ratio = widthRatio > heightRatio ? widthRatio : heightRatio;


                           var resizedWidth = width < height ? 600 : (int)(width * ratio);
                           var resizedHeight = height < width ? 600 : (int) (height * ratio);


                           var converter = new ImageConverter();
                           var image =
                      new WebImage((byte[])converter.ConvertTo(bitmap, typeof(byte[])))
                      .Resize(resizedWidth, resizedHeight)
                      .Crop((resizedHeight - 600) / 2, ((resizedWidth - 600)/ 2), ((resizedHeight - 600) / 2), ((resizedWidth - 600) / 2));
          }