最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

場景

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

項(xiàng)目運(yùn)行效果

實(shí)現(xiàn)

新建一個(gè)窗體頁面,然后設(shè)計(jì)頁面布局如下

選擇圖片按鈕點(diǎ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];             //存儲(chǔ)每一行數(shù)據(jù)
        FileInfo fi;                      //創(chuàng)建一個(gè)FileInfo對(duì)象,用于獲取圖片信息
        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());       //實(shí)例化FileInfo對(duì)象
          //將每一行數(shù)據(jù)第一個(gè)位置的圖標(biāo)添加到imageList1中
          imageList1.Images.Add(ImgName,Properties.Resources.圖標(biāo)__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); //實(shí)例化ListViewItem對(duì)象
          listView1.Items.Add(lvi);               //將信息添加到listView1控件中
        }
        tsslFileNum.Text = "當(dāng)前共有" + path1.Length.ToString() + "個(gè)文件";//狀態(tài)欄中顯示圖片數(shù)量
      }
    }

選擇圖片保存位置按鈕點(diǎn)擊事件

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

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

private void toolStripButton1_Click(object sender, EventArgs e)
    {
      if (path1 == null)                       //判斷是否選擇圖片
      {
        MessageBox.Show("請(qǐng)選擇圖片!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
      }
      else
      {
        if (path2.Length == 0)                   //判斷是否選擇保存位置
        {
          MessageBox.Show("請(qǐng)選擇保存位置!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        else
        {
          flags = 1;                       //初始化flags變量為1,用于計(jì)算進(jìn)度
          toolStrip1.Enabled = false;               //當(dāng)轉(zhuǎn)換開始時(shí),禁用工具欄
          int flag = tscbType.SelectedIndex;           //判斷將圖片轉(zhuǎn)換為何種格式
          switch (flag)                      //根據(jù)不同的格式進(jìn)行轉(zhuǎn)換
          {
            case 0:
              Imgtype1 = 0;                  //如果選擇第一項(xiàng)則轉(zhuǎn)換為BMP格式
              td = new Thread(new ThreadStart(ConvertImage)); //通過線程調(diào)用ConvertImage方法進(jìn)行轉(zhuǎn)換
              td.Start();
              break;
            case 1:                       //如果選擇第二項(xiàng)則轉(zhuǎn)換為JPG格式
              Imgtype1 = 1;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進(jìn)行轉(zhuǎn)換
              td.Start();
              break;
            case 2:                      //如果選擇第三項(xiàng)則轉(zhuǎn)換為PNG格式
              Imgtype1 = 2;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進(jìn)行轉(zhuǎn)換
              td.Start();
              break;
            case 3:                       //如果選擇第四項(xiàng)則轉(zhuǎn)換為GIF格式
              Imgtype1 = 3;
              td = new Thread(new ThreadStart(ConvertImage));//通過線程調(diào)用ConvertImage方法進(jìn)行轉(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;         //用于存儲(chǔ)選擇的文件列表
    string path2="";          //用于存儲(chǔ)保存的路徑
    Bitmap bt;             //聲明一個(gè)轉(zhuǎn)換圖片格式的Bitmap對(duì)象
    Thread td;             //聲明一個(gè)線程
    int Imgtype1;            //聲明一個(gè)變量用于標(biāo)記ConvertImage方法中轉(zhuǎn)換的類型
    string OlePath;           //聲明一個(gè)變量用于存儲(chǔ)ConvertImage方法中原始圖片的路徑
    string path;            //聲明一個(gè)變量用于存儲(chǔ)ConvertImage方法中轉(zhuǎn)換后圖片的保存路徑
    int flags;              //用于標(biāo)記已轉(zhuǎn)換圖片的數(shù)量,用于計(jì)算轉(zhuǎn)換進(jìn)度

    private void Form2_Load(object sender, EventArgs e) 
    {
      tscbType.SelectedIndex = 0;       //設(shè)置第一個(gè)轉(zhuǎn)換類型被選中
      CheckForIllegalCrossThreadCalls = false;//屏蔽線程彈出的錯(cuò)誤提示
    }
    private void toolStripButton3_Click(object sender, EventArgs e)//選擇轉(zhuǎn)換文件的按鈕
    {
      if (openFileDialog1.ShowDialog() == DialogResult.OK)    //判斷是否選擇文件
      {
        listView1.Items.Clear();                //清空listView1
        string[] info = new string[7];             //存儲(chǔ)每一行數(shù)據(jù)
        FileInfo fi;                      //創(chuàng)建一個(gè)FileInfo對(duì)象,用于獲取圖片信息
        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());       //實(shí)例化FileInfo對(duì)象
          //將每一行數(shù)據(jù)第一個(gè)位置的圖標(biāo)添加到imageList1中
          imageList1.Images.Add(ImgName,Properties.Resources.圖標(biāo)__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); //實(shí)例化ListViewItem對(duì)象
          listView1.Items.Add(lvi);               //將信息添加到listView1控件中
        }
        tsslFileNum.Text = "當(dāng)前共有" + path1.Length.ToString() + "個(gè)文件";//狀態(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;                          //清空?qǐng)D片的集合
      tsslFileNum.Text = "當(dāng)前沒有文件";                 //狀態(tài)欄中提示
      tsslPlan.Text = "";                         //清空進(jìn)度數(shù)字
    }

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

完整源碼下載

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

相關(guān)文章

  • WPF基礎(chǔ)教程之形狀畫刷與變換詳解

    WPF基礎(chǔ)教程之形狀畫刷與變換詳解

    這篇文章主要給大家介紹了關(guān)于WPF基礎(chǔ)教程之形狀畫刷與變換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • .NET創(chuàng)建、刪除、復(fù)制文件夾及其子文件的實(shí)例方法

    .NET創(chuàng)建、刪除、復(fù)制文件夾及其子文件的實(shí)例方法

    .NET創(chuàng)建、刪除、復(fù)制文件夾及其子文件的實(shí)例方法,需要的朋友可以參考一下
    2013-03-03
  • 使用C#實(shí)現(xiàn)解析Excel公式

    使用C#實(shí)現(xiàn)解析Excel公式

    在日常工作中,我們經(jīng)常需要在Excel中使用公式對(duì)表中數(shù)據(jù)進(jìn)行計(jì)算和分析,所以本文小編主要來和大家介紹一下如何在C#中實(shí)現(xiàn)解析Excel公式,感興趣的可以了解下
    2024-02-02
  • Unity UGUI的Outline描邊組件的介紹使用示例

    Unity UGUI的Outline描邊組件的介紹使用示例

    這篇文章主要介紹了Unity UGUI的Outline描邊組件的介紹使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • WebService 的簡單封裝接口調(diào)用方法

    WebService 的簡單封裝接口調(diào)用方法

    這篇文章主要介紹了WebService 的簡單封裝接口調(diào)用方法,主要是通過簡單的sql語句來查詢數(shù)據(jù)庫,從而返回dataset,十分簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • 使用C#實(shí)現(xiàn)將CSV文件內(nèi)容裝配成對(duì)象列表

    使用C#實(shí)現(xiàn)將CSV文件內(nèi)容裝配成對(duì)象列表

    這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)將CSV文件內(nèi)容裝配成對(duì)象列表,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C#中常見警告類型及處理方法詳解

    C#中常見警告類型及處理方法詳解

    在C#開發(fā)過程中,常常會(huì)遇到各種各樣的警告信息,本文將結(jié)合多種常見情況,詳細(xì)介紹如何處理C#中的一些典型警告,希望對(duì)大家有所幫助
    2024-11-11
  • 使用VS2019生成C#應(yīng)用安裝包的方法步驟

    使用VS2019生成C#應(yīng)用安裝包的方法步驟

    本文主要介紹了使用VS2019生成C#應(yīng)用安裝包的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C# winform分頁查詢的實(shí)現(xiàn)示例

    C# winform分頁查詢的實(shí)現(xiàn)示例

    這篇文章主要介紹了C# winform分頁查詢的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C#利用WebClient實(shí)現(xiàn)兩種方式下載文件

    C#利用WebClient實(shí)現(xiàn)兩種方式下載文件

    本篇文章主要介紹了C#利用WebClient 兩種方式下載文件,詳細(xì)的介紹了兩種方式,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-02-02

最新評(píng)論

定日县| 万全县| 宜都市| 大冶市| 东乌| 同仁县| 于都县| 收藏| 阿城市| 青海省| 峨边| 泾川县| 泾阳县| 贵州省| 泸溪县| 鄂托克旗| 五台县| 浑源县| 额济纳旗| 连山| 新乡市| 沂源县| 曲沃县| 漳州市| 万年县| 青田县| 方正县| 灌南县| 临江市| 永靖县| 平塘县| 昌乐县| 宣汉县| 扶风县| 德令哈市| 泾川县| 图木舒克市| 南部县| 通海县| 泸州市| 宁津县|