欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Winform中實現(xiàn)圖片格式轉(zhuǎn)換

 更新時間:2020年12月23日 15:59:49   作者:霸道流氓  
這篇文章主要介紹了Winform中實現(xiàn)圖片格式轉(zhuǎn)換的示例代碼,幫助大家更好的理解和使用winform開發(fā),感興趣的朋友可以了解下

場景

選擇一張照片并選擇保存位置和要轉(zhuǎn)換的圖片格式實現(xiàn)圖片格式轉(zhuǎn)換。

項目運行效果

實現(xiàn)

新建一個窗體頁面,然后設計頁面布局如下

選擇圖片按鈕點擊事件中

private void toolStripButton3_Click(object sender, EventArgs e)//選擇轉(zhuǎn)換文件的按鈕
    {
      if (openFileDialog1.ShowDialog() == DialogResult.OK)    //判斷是否選擇文件
      {
        listView1.Items.Clear();                //清空listView1
        string[] info = new string[7];             //存儲每一行數(shù)據(jù)
        FileInfo fi;                      //創(chuàng)建一個FileInfo對象,用于獲取圖片信息
        path1 = openFileDialog1.FileNames;           //獲取選擇的圖片集合
        for (int i = 0; i < path1.Length; i++)         //讀取集合中的內(nèi)容
        {
          //獲取圖片名稱
          string ImgName = path1[i].Substring(path1[i].LastIndexOf("\\") + 1, path1[i].Length - path1[i].LastIndexOf("\\") - 1);
          //獲取圖片類型
          string ImgType = ImgName.Substring(ImgName.LastIndexOf(".") + 1, ImgName.Length - ImgName.LastIndexOf(".") - 1);
          fi = new FileInfo(path1[i].ToString());       //實例化FileInfo對象
          //將每一行數(shù)據(jù)第一個位置的圖標添加到imageList1中
          imageList1.Images.Add(ImgName,Properties.Resources.圖標__23_);
          info[1] = ImgName;           //圖片名稱
          info[2] = ImgType;           //圖片類型
          info[3] = fi.LastWriteTime.ToShortDateString();//圖片最后修改日期
          info[4] = path1[i].ToString();         //圖片位置
          info[5] = (fi.Length/1024)+"KB";        //圖片大小
          info[6] = "未轉(zhuǎn)換";                //圖片狀態(tài)
          ListViewItem lvi = new ListViewItem(info, ImgName); //實例化ListViewItem對象
          listView1.Items.Add(lvi);               //將信息添加到listView1控件中
        }
        tsslFileNum.Text = "當前共有" + path1.Length.ToString() + "個文件";//狀態(tài)欄中顯示圖片數(shù)量
      }
    }

選擇圖片保存位置按鈕點擊事件

private void toolStripButton4_Click(object sender, EventArgs e)//選擇保存路徑按鈕
    {
      if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)  //判斷是否選擇保存路徑
      {
        path2 = folderBrowserDialog1.SelectedPath;       //獲取保存路徑
      }
    }

開始轉(zhuǎn)換按鈕點擊事件

private void toolStripButton1_Click(object sender, EventArgs e)
    {
      if (path1 == null)                       //判斷是否選擇圖片
      {
        MessageBox.Show("請選擇圖片!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
      }
      else
      {
        if (path2.Length == 0)                   //判斷是否選擇保存位置
        {
          MessageBox.Show("請選擇保存位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        else
        {
          flags = 1;                       //初始化flags變量為1,用于計算進度
          toolStrip1.Enabled = false;               //當轉(zhuǎn)換開始時,禁用工具欄
          int flag = tscbType.SelectedIndex;           //判斷將圖片轉(zhuǎn)換為何種格式
          switch (flag)                      //根據(jù)不同的格式進行轉(zhuǎn)換
          {
            case 0:
              Imgtype1 = 0;                  //如果選擇第一項則轉(zhuǎn)換為BMP格式
              td = new Thread(new ThreadStart(ConvertImage)); //通過線程調(diào)用ConvertImage方法進行轉(zhuǎn)換
              td.Start();
              break;
            case 1:                       //如果選擇第二項則轉(zhuǎn)換為JPG格式
              Imgtype1 = 1;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進行轉(zhuǎn)換
              td.Start();
              break;
            case 2:                      //如果選擇第三項則轉(zhuǎn)換為PNG格式
              Imgtype1 = 2;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進行轉(zhuǎn)換
              td.Start();
              break;
            case 3:                       //如果選擇第四項則轉(zhuǎn)換為GIF格式
              Imgtype1 = 3;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進行轉(zhuǎn)換
              td.Start();
              break;
            default: td.Abort(); break;
          }
        }
      }
    }

完整窗體頁面代碼

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;
namespace PictureBatchConversion
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    string[] path1=null;         //用于存儲選擇的文件列表
    string path2="";          //用于存儲保存的路徑
    Bitmap bt;             //聲明一個轉(zhuǎn)換圖片格式的Bitmap對象
    Thread td;             //聲明一個線程
    int Imgtype1;            //聲明一個變量用于標記ConvertImage方法中轉(zhuǎn)換的類型
    string OlePath;           //聲明一個變量用于存儲ConvertImage方法中原始圖片的路徑
    string path;            //聲明一個變量用于存儲ConvertImage方法中轉(zhuǎn)換后圖片的保存路徑
    int flags;              //用于標記已轉(zhuǎn)換圖片的數(shù)量,用于計算轉(zhuǎn)換進度

    private void Form2_Load(object sender, EventArgs e) 
    {
      tscbType.SelectedIndex = 0;       //設置第一個轉(zhuǎn)換類型被選中
      CheckForIllegalCrossThreadCalls = false;//屏蔽線程彈出的錯誤提示
    }
    private void toolStripButton3_Click(object sender, EventArgs e)//選擇轉(zhuǎn)換文件的按鈕
    {
      if (openFileDialog1.ShowDialog() == DialogResult.OK)    //判斷是否選擇文件
      {
        listView1.Items.Clear();                //清空listView1
        string[] info = new string[7];             //存儲每一行數(shù)據(jù)
        FileInfo fi;                      //創(chuàng)建一個FileInfo對象,用于獲取圖片信息
        path1 = openFileDialog1.FileNames;           //獲取選擇的圖片集合
        for (int i = 0; i < path1.Length; i++)         //讀取集合中的內(nèi)容
        {
          //獲取圖片名稱
          string ImgName = path1[i].Substring(path1[i].LastIndexOf("\\") + 1, path1[i].Length - path1[i].LastIndexOf("\\") - 1);
          //獲取圖片類型
          string ImgType = ImgName.Substring(ImgName.LastIndexOf(".") + 1, ImgName.Length - ImgName.LastIndexOf(".") - 1);
          fi = new FileInfo(path1[i].ToString());       //實例化FileInfo對象
          //將每一行數(shù)據(jù)第一個位置的圖標添加到imageList1中
          imageList1.Images.Add(ImgName,Properties.Resources.圖標__23_);
          info[1] = ImgName;           //圖片名稱
          info[2] = ImgType;           //圖片類型
          info[3] = fi.LastWriteTime.ToShortDateString();//圖片最后修改日期
          info[4] = path1[i].ToString();         //圖片位置
          info[5] = (fi.Length/1024)+"KB";        //圖片大小
          info[6] = "未轉(zhuǎn)換";                //圖片狀態(tài)
          ListViewItem lvi = new ListViewItem(info, ImgName); //實例化ListViewItem對象
          listView1.Items.Add(lvi);               //將信息添加到listView1控件中
        }
        tsslFileNum.Text = "當前共有" + path1.Length.ToString() + "個文件";//狀態(tài)欄中顯示圖片數(shù)量
      }
    }

    private void toolStripButton2_Click(object sender, EventArgs e) //關(guān)閉按鈕
    {
      Application.Exit();                     //退出系統(tǒng)
    }

    private void toolStripButton5_Click(object sender, EventArgs e) //清空列表的按鈕
    {  
      listView1.Items.Clear();                    //清空列表
      path1 = null;                          //清空圖片的集合
      tsslFileNum.Text = "當前沒有文件";                 //狀態(tài)欄中提示
      tsslPlan.Text = "";                         //清空進度數(shù)字
    }

    private void toolStripButton1_Click(object sender, EventArgs e)
    {
      if (path1 == null)                       //判斷是否選擇圖片
      {
        MessageBox.Show("請選擇圖片!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
      }
      else
      {
        if (path2.Length == 0)                   //判斷是否選擇保存位置
        {
          MessageBox.Show("請選擇保存位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        else
        {
          flags = 1;                       //初始化flags變量為1,用于計算進度
          toolStrip1.Enabled = false;               //當轉(zhuǎn)換開始時,禁用工具欄
          int flag = tscbType.SelectedIndex;           //判斷將圖片轉(zhuǎn)換為何種格式
          switch (flag)                      //根據(jù)不同的格式進行轉(zhuǎn)換
          {
            case 0:
              Imgtype1 = 0;                  //如果選擇第一項則轉(zhuǎn)換為BMP格式
              td = new Thread(new ThreadStart(ConvertImage)); //通過線程調(diào)用ConvertImage方法進行轉(zhuǎn)換
              td.Start();
              break;
            case 1:                       //如果選擇第二項則轉(zhuǎn)換為JPG格式
              Imgtype1 = 1;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進行轉(zhuǎn)換
              td.Start();
              break;
            case 2:                      //如果選擇第三項則轉(zhuǎn)換為PNG格式
              Imgtype1 = 2;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進行轉(zhuǎn)換
              td.Start();
              break;
            case 3:                       //如果選擇第四項則轉(zhuǎn)換為GIF格式
              Imgtype1 = 3;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進行轉(zhuǎn)換
              td.Start();
              break;
            default: td.Abort(); break;
          }
        }
      }
    }

    private void toolStripButton4_Click(object sender, EventArgs e)//選擇保存路徑按鈕
    {
      if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)  //判斷是否選擇保存路徑
      {
        path2 = folderBrowserDialog1.SelectedPath;       //獲取保存路徑
      }
    }

    private void ConvertImage()
    {
      flags = 1;
      switch (Imgtype1)
      {
        case 0: 
          for (int i = 0; i < path1.Length; i++)
          {
            string ImgName = path1[i].Substring(path1[i].LastIndexOf("\\") + 1, path1[i].Length - path1[i].LastIndexOf("\\") - 1);
            ImgName = ImgName.Remove(ImgName.LastIndexOf("."));
            OlePath = path1[i].ToString();
            bt = new Bitmap(OlePath);
            path = path2 + "\\" + ImgName + ".bmp";
            bt.Save(path, System.Drawing.Imaging.ImageFormat.Bmp);
            listView1.Items[flags - 1].SubItems[6].Text = "已轉(zhuǎn)換";
            tsslPlan.Text = "正在轉(zhuǎn)換"+flags*100/path1.Length+"%";
            if (flags == path1.Length)
            {
              toolStrip1.Enabled = true;
              tsslPlan.Text = "圖片轉(zhuǎn)換全部完成";
            }
            flags++;
          }
          break;
        case 1:
          for (int i = 0; i < path1.Length; i++)
          {
            string ImgName = path1[i].Substring(path1[i].LastIndexOf("\\") + 1, path1[i].Length - path1[i].LastIndexOf("\\") - 1);
            ImgName = ImgName.Remove(ImgName.LastIndexOf("."));
            OlePath = path1[i].ToString();
            bt = new Bitmap(OlePath);
            path = path2 + "\\" + ImgName + ".jpeg";
            bt.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);
            listView1.Items[flags - 1].SubItems[6].Text = "已轉(zhuǎn)換";
            tsslPlan.Text = "正在轉(zhuǎn)換" + flags * 100 / path1.Length + "%";
            if (flags == path1.Length)
            {
              toolStrip1.Enabled = true;
              tsslPlan.Text = "圖片轉(zhuǎn)換全部完成";
            }
            flags++;
          }
          break;
        case 2:
          for (int i = 0; i < path1.Length; i++)
          {
            string ImgName = path1[i].Substring(path1[i].LastIndexOf("\\") + 1, path1[i].Length - path1[i].LastIndexOf("\\") - 1);
            ImgName = ImgName.Remove(ImgName.LastIndexOf("."));
            OlePath = path1[i].ToString();
            bt = new Bitmap(OlePath);
            path = path2 + "\\" + ImgName + ".png";
            bt.Save(path, System.Drawing.Imaging.ImageFormat.Png);
            listView1.Items[flags - 1].SubItems[6].Text = "已轉(zhuǎn)換";
            tsslPlan.Text = "正在轉(zhuǎn)換" + flags * 100 / path1.Length + "%";
            if (flags == path1.Length)
            {
              toolStrip1.Enabled = true;
              tsslPlan.Text = "圖片轉(zhuǎn)換全部完成";
            }
            flags++;
          }
          break;
        case 3:
          for (int i = 0; i < path1.Length; i++)
          {
            string ImgName = path1[i].Substring(path1[i].LastIndexOf("\\") + 1, path1[i].Length - path1[i].LastIndexOf("\\") - 1);
            ImgName = ImgName.Remove(ImgName.LastIndexOf("."));
            OlePath = path1[i].ToString();
            bt = new Bitmap(OlePath);
            path = path2 + "\\" + ImgName + ".gif";
            bt.Save(path, System.Drawing.Imaging.ImageFormat.Gif);
            listView1.Items[flags - 1].SubItems[6].Text = "已轉(zhuǎn)換";
            tsslPlan.Text = "正在轉(zhuǎn)換" + flags * 100 / path1.Length + "%";
            if (flags == path1.Length)
            {
              toolStrip1.Enabled = true;
              tsslPlan.Text = "圖片轉(zhuǎn)換全部完成";
            }
            flags++;
          }
          break;
        default: bt.Dispose(); break;
      }
    }

    private void Form2_FormClosed(object sender, FormClosedEventArgs e)//關(guān)閉窗口時要關(guān)閉線程
    {
      if (td != null)                         //判斷是否存在線程
      {
        if (td.ThreadState == ThreadState.Running)         //然后判斷線程是否正在運行
        {
          td.Abort();                       //如果運行則關(guān)閉線程
        }
      }
    }
  }
}

完整源碼下載

以上就是Winform中實現(xiàn)圖片格式轉(zhuǎn)換的詳細內(nèi)容,更多關(guān)于Winform 圖片格式轉(zhuǎn)換的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#生成隨機字符串的實例

    C#生成隨機字符串的實例

    本文介紹了“C#生成隨機字符串的實例”,需要的朋友可以參考一下
    2013-03-03
  • C#編程之AOP編程思想

    C#編程之AOP編程思想

    這篇文章介紹了C#編程之AOP編程思想,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • c# 實現(xiàn)MD5,SHA1,SHA256,SHA512等常用加密算法源代碼

    c# 實現(xiàn)MD5,SHA1,SHA256,SHA512等常用加密算法源代碼

    c# 如何實現(xiàn)MD5,SHA1,SHA256,SHA512等常用加密算法,需要的朋友可以參考下
    2012-12-12
  • C# 多線程中經(jīng)常訪問同一資源可能造成哪些問題

    C# 多線程中經(jīng)常訪問同一資源可能造成哪些問題

    這篇文章主要介紹了C# 多線程中經(jīng)常訪問同一資源可能造成哪些問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • c#采用toml做配置文件遇到的坑

    c#采用toml做配置文件遇到的坑

    這篇文章主要介紹了c#采用toml做配置文件遇到的坑,本文通過實例代碼給大家介紹的非常詳細,通過本文介紹得出c#用toml文件讀取非整數(shù)字請用double,不要用float,decimal倒無所謂,反正編譯不過,切記不要用float,需要的朋友可以參考下
    2024-04-04
  • Unity實現(xiàn)Flappy Bird游戲開發(fā)實戰(zhàn)

    Unity實現(xiàn)Flappy Bird游戲開發(fā)實戰(zhàn)

    這篇文章主要為大家詳細介紹了Unity實現(xiàn)Flappy Bird游戲開發(fā)實戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C# 根據(jù)字符串生成二維碼的實例代碼

    C# 根據(jù)字符串生成二維碼的實例代碼

    這篇文章主要介紹了C# 根據(jù)字符串生成二維碼的實例,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • C#中TCP粘包問題的解決方法

    C#中TCP粘包問題的解決方法

    這篇文章主要為大家詳細介紹了C#中TCP粘包問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • C# 以MDF文件鏈接數(shù)據(jù)庫的示例代碼

    C# 以MDF文件鏈接數(shù)據(jù)庫的示例代碼

    本篇文章主要介紹了C# 以MDF文件鏈接數(shù)據(jù)庫的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • C# 程序集和反射詳解

    C# 程序集和反射詳解

    本文主要介紹了C# 程序集和反射的相關(guān)知識。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01

最新評論