0
我想從一個用戶在Asp.net MVC中獲取圖像並將其調整爲特定大小,但我必須將其大小調整爲一定大小而不會變形。我沒有問題,如果圖像的某些部分被裁剪,但我不希望如果用戶上傳4000X2000px圖像我裁剪600X600,並失去了很多部分的圖像。將未知尺寸的圖像調整爲特定尺寸而不變形?
我該怎麼做?有什麼算法嗎?或者.net中是否有任何源代碼?
我想從一個用戶在Asp.net MVC中獲取圖像並將其調整爲特定大小,但我必須將其大小調整爲一定大小而不會變形。我沒有問題,如果圖像的某些部分被裁剪,但我不希望如果用戶上傳4000X2000px圖像我裁剪600X600,並失去了很多部分的圖像。將未知尺寸的圖像調整爲特定尺寸而不變形?
我該怎麼做?有什麼算法嗎?或者.net中是否有任何源代碼?
我找到了解決辦法:
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));
}
http://stackoverflow.com/questions/734930/how-to-crop-an-image-using-c –
感謝夥計,我知道如何裁剪在c#中的圖像,但正如我所說我不希望如果用戶上傳例如4000X2000px圖像我裁剪600X600,並失去了很多部分的圖像。 – Hamed
好吧,現在我明白你的要求了。 「如果圖像的某些部分被裁剪掉,我沒有問題 - 」讓我困惑。 –