本人在此之前,曾看过一些博客或者其他网上的文章,同时我也参考和借鉴、以及使用某个博主的代码进行修改过,在此忘了那个博主的博客地址了,有什么不合理之处请见谅!
本方法是传入一个图片的图片流(本人使用的是MemoryStream ),最后返回的也是MemoryStream 对象,代码如下:
public static MemoryStream AdjustPhoto(int toWidth, int toHeight, MemoryStream stream, int maxWidth, int maxHeight)
{
Image originalImage = Image.FromStream(stream);
//根据图片大小获取新图片从原图片截取的区域
int x, y, w, h;
if (toHeight > 0)
{
if (toWidth > 0)
{
if (originalImage.Width > toWidth && originalImage.Height > toHeight)
{
w = toWidth;
h = toWidth * originalImage.Height / originalImage.Width;
if (h > toHeight)
{
h = toHeight;
w = toHeight * originalImage.Width / originalImage.Height;
x = (toWidth - w) / 2;
y = 0;
}
else
{
x = 0;
y = (toHeight - h) / 2;
}
}