1. 程式人生 > 實用技巧 >C#將上傳圖片壓縮(製作成縮圖)

C#將上傳圖片壓縮(製作成縮圖)

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