1.制成縮略圖方法
/// <summary>
/// 制作縮略圖
/// </summary>
/// <param name="original">圖片對象</param>
/// <param name="newFileName">新圖路徑</param>
/// <param name="maxWidth">最大寬度</param>
/// <param name="maxHeight">最大高度</param>
public static void ThumbImg(System.Drawing.Image original, string newFileName, int maxWidth, int maxHeight)
{
Size newSize = ResizeImage(original.Width, original.Height, maxWidth, maxHeight);
using (System.Drawing.Image displayImage = new Bitmap(original, newSize))
{
try
{
displayImage.Save(newFileName, original.RawFormat);
}
finally
{
original.Dispose();
}
}
}
2.進行壓縮過程中,有時會丟失正確的位置信息,需旋轉到正確的位置
/// <summary>
/// 將圖片旋轉到正確位置
/// </summary>
/// <param name="image"></param>
/// <returns></returns>
public static void OrientationImage(Image image)
{
if (Array.IndexOf(image.PropertyIdList, 274) > -1)
{
var orientation = (int)image.GetPropertyItem(274).Value[0];
switch (orientation)
{
case 1:
// No rotation required.
break;
case 2:
image.RotateFlip(RotateFlipType.RotateNoneFlipX);
break;
case 3:
image.RotateFlip(RotateFlipType.Rotate180FlipNone);
break;
case 4:
image.RotateFlip(RotateFlipType.Rotate180FlipX);
break;
case 5:
image.RotateFlip(RotateFlipType.Rotate90FlipX);
break;
case 6:
image.RotateFlip(RotateFlipType.Rotate90FlipNone);
break;
case 7:
image.RotateFlip(RotateFlipType.Rotate270FlipX);
break;
case 8:
image.RotateFlip(RotateFlipType.Rotate270FlipNone);
break;
}
image.RemovePropertyItem(274);
}
}
3.使用上述方法進行圖片處理
public void getImg()
{
Image img = Image.FromStream(File.OpenReadStream()); //直接將文件轉為文件流形式
OrientationImage(img);
ThumbImg(img, imgroute, 600, 800); // imgroute指圖片存儲路徑 600 指寬度 800指高度
}
