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指高度 }