C# 圖檔格式轉換
在日常工作中,經常需要不同格式(JPG,PNG,BMP,GIF,ICO)的圖檔,有時還需要進行圖檔格式的互相轉換,本文以一個簡單的小例子,簡述圖檔格式轉換的常見方法,僅供學習分享使用,如有不足之處,還請指正。
涉及知識點
- OpenFileDialog 打開檔案對話框,用于選擇檔案,可以設定過濾字尾。
- FolderBrowserDialog 檔案夾選擇對話框,用于選擇一個檔案夾,可以新增。
- ImageFormat 圖檔類型枚舉。
- Bitmap 位圖對象,包含對應的屬性和内容。
- Stream 流對象的基類。
- FlowLayoutPanel 流式布局容器,所添加的元素,以橫向或縱向依次排列。
示例效果圖
圖檔轉換器的示例效果圖如下:

核心代碼
打開圖檔
1 /// 2 /// 打開圖檔 3 /// 4 /// 5 /// 6 private void btnOpen_Click(object sender, EventArgs e) 7 { 8 9 this.fileDialog.Filter = fileFilter;10 this.fileDialog.Multiselect = true;11 this.fileDialog.CheckFileExists = true;12 if (fileDialog.ShowDialog() == DialogResult.OK)13 {14 string[] fileNames = this.fileDialog.FileNames;15 foreach(string fileName in fileNames)16 {17 Bitmap bmp = new Bitmap(fileName);18 //儲存圖檔名稱19 bmp.Tag = Path.GetFileNameWithoutExtension(fileName);20 PictureBox box = new PictureBox();21 box.Image = bmp;22 box.Width = 105;23 box.Height = 150;24 box.BorderStyle = BorderStyle.FixedSingle;25 box.Padding = new Padding(2);26 this.flowPnl.Controls.Add(box);27 }28 this.txtFile.Text = Path.GetDirectoryName(fileNames[0]);29 30 }31 }
View Code
轉換圖檔格式
1 /// 2 /// 轉換圖檔 3 /// 4 private void convertImage(string dir, string filter,Bitmap bmp) 5 { 6 string filePath = Path.Combine(dir, string.Format("{0}.{1}", bmp.Tag.ToString(), filter.ToLower())); 7 switch (filter) 8 { 9 case "JPG":10 bmp.Save(filePath, ImageFormat.Jpeg);11 break;12 case "PNG":13 bmp.Save(filePath, ImageFormat.Png);14 break;15 case "GIF":16 bmp.Save(filePath, ImageFormat.Gif);17 break;18 case "BMP":19 bmp.Save(filePath, ImageFormat.Bmp);20 break;21 case "ICO":22 Stream stream = File.Create(filePath);23 Icon icon = Icon.FromHandle(bmp.GetHicon());24 icon.Save(stream); // save the icon25 stream.Close();26 break;27 }28 }