2015-10-24 136 views
0

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

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

+0

http://stackoverflow.com/questions/734930/how-to-crop-an-image-using-c –

+0

感谢伙计,我知道如何裁剪在c#中的图像,但正如我所说我不希望如果用户上传例如4000X2000px图像我裁剪600X600,并失去了很多部分的图像。 – Hamed

+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)); 
      } 
相关问题