首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 圖片格式轉換:ImageFormat 完整應用指南

     編輯:關於C#

核心概念

使用 System.Drawing.Image.Save(string path, ImageFormat format) 方法,透過 ImageFormat 靜態屬性指定目標格式即可完成轉換。

完整 WinForms 範例

private void btnConvert_Click(object sender, EventArgs e)
{
    if (MyBitmap == null)
    {
        MessageBox.Show("請先選擇圖片!", "提示");
        return;
    }

    using (var saveDlg = new SaveFileDialog())
    {
        if (saveDlg.ShowDialog() != DialogResult.OK) return;
        string fileName = saveDlg.FileName;

        try
        {
            switch (cboFormat.SelectedIndex)
            {
                case 0: MyBitmap.Save(fileName + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp); break;
                case 1: MyBitmap.Save(fileName + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); break;
                case 2: MyBitmap.Save(fileName + ".png", System.Drawing.Imaging.ImageFormat.Png); break;
                case 3: MyBitmap.Save(fileName + ".gif", System.Drawing.Imaging.ImageFormat.Gif); break;
                case 4: MyBitmap.Save(fileName + ".tif", System.Drawing.Imaging.ImageFormat.Tiff); break;
                case 5: MyBitmap.Save(fileName + ".wmf", System.Drawing.Imaging.ImageFormat.Wmf); break;
            }
            MessageBox.Show("轉換完成!");
        }
        catch (Exception ex)
        {
            MessageBox.Show($"轉換失敗:{ex.Message}", "錯誤");
        }
    }
}

支援格式對照表

索引副檔名ImageFormat 屬性特性
0.bmpImageFormat.Bmp無損、無壓縮、檔案大
1.jpgImageFormat.Jpeg有損壓縮、適合照片、支援品質參數
2.pngImageFormat.Png無損壓縮、支援透明通道、網頁首選
3.gifImageFormat.Gif256 色、支援動畫、簡單圖示適用
4.tifImageFormat.Tiff專業印刷、多頁、無損/有損皆支援
5.wmfImageFormat.WmfWindows 向量圖元檔、可縮放

進階技巧:JPEG 品質控制

using System.Drawing.Imaging;

var encoderParams = new EncoderParameters(1);
encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 85L); // 0-100

var jpegCodec = ImageCodecInfo.GetImageEncoders()
    .First(c => c.FormatID == ImageFormat.Jpeg.Guid);

MyBitmap.Save(fileName + ".jpg", jpegCodec, encoderParams);

⚠️ 重要提醒

  • 原始碼 Bug 修正:原文 case 1/2/3 的格式對應錯誤(Jpeg/Gif/Png 互亂),上方已修正。
  • 副檔名與格式一致:雖然 GDI+ 依格式參數決定編碼,但副檔名應匹配以利其他軟體識別。
  • .NET Core / 5+ 跨平台:System.Drawing.Common 僅支援 Windows,Linux/macOS 建議改用 ImageSharp 或 SkiaSharp。
  • 資源釋放:Bitmap 實作 IDisposable,用完記得 Dispose() 或 using 區塊。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved