选择一张照片并选择保存位置和要转换的图片格式实现图片格式转换。
项目运行效果
新建一个窗体页面,然后设计页面布局如下
选择图片按钮点击事件中
private void toolstripbutton3_click(object nder, eventargs e)//选择转换文件的按钮 { if (openfiledialog1.showdialog() == dialogresult.ok) //判断是否选择文件 { listview1.items.clear(); //清空listview1 string[] info = new string[7]; //存储每一行数据 fileinfo fi; //创建一个fileinfo对象,用于获取图片信息 path1 = openfiledialog1.filenames; //获取选择的图片集合 for (int i = 0; i < path1.length; 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对象 //将每一行数据第一个位置的图标添加到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] = "未转换"; //图片状态 listviewitem lvi = new listviewitem(info, imgname); //实例化listviewitem对象 listview1.items.add(lvi); //将信息添加到listview1控件中 } tsslfilenum.text = "当前共有" + path1.length.tostring() + "个文件";//状态栏中显示图片数量 } }
选择图片保存位置按钮点击事件
private void toolstripbutton4_click(object nder, eventargs e)//选择保存路径按钮 { if (folderbrowrdialog1.showdialog() == dialogresult.ok) //判断是否选择保存路径 { path2 = folderbrowrdialog1.lectedpath; //获取保存路径 } }
开始转换按钮点击事件
private void toolstripbutton1_click(object nder, eventargs e) { if (path1 == null) //判断是否选择图片 { messagebox.show("请选择图片!", "提示", messageboxbuttons.ok, messageboxicon.information); } el { if (path2.length == 0) //判断是否选择保存位置 { messagebox.show("请选择保存位置!", "提示", messageboxbuttons.ok, messageboxicon.information); } el { flags = 1; //初始化flags变量为1,用于计算进度 toolstrip1.enabled = fal; //当转换开始时,禁用工具栏 int flag = tscbtype.lectedindex; //判断将图片转换为何种格式 switch (flag) //根据不同的格式进行转换 { ca 0: imgtype1 = 0; //如果选择第一项则转换为bmp格式 td = new thread(new threadstart(convertimage)); //通过线程调用convertimage方法进行转换 td.start(); break; ca 1: //如果选择第二项则转换为jpg格式 imgtype1 = 1; td = new thread(new threadstart(convertimage));//通过线程调用convertimage方法进行转换 td.start(); break; ca 2: //如果选择第三项则转换为png格式 imgtype1 = 2; td = new thread(new threadstart(convertimage));//通过线程调用convertimage方法进行转换 td.start(); break; ca 3: //如果选择第四项则转换为gif格式 imgtype1 = 3; td = new thread(new threadstart(convertimage));//通过线程调用convertimage方法进行转换 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; //声明一个转换图片格式的bitmap对象thread td; //声明一个线程int imgtype1; //声明一个变量用于标记convertimage方法中转换的类型string olepath; //声明一个变量用于存储convertimage方法中原始图片的路径string path; //声明一个变量用于存储convertimage方法中转换后图片的保存路径int flags; //用于标记已转换图片的数量,用于计算转换进度private void form2_load(object nder, eventargs e) {tscbtype.lectedindex = 0; //设置第一个转换类型被选中checkforillegalcrossthreadcalls = fal;//屏蔽线程弹出的错误提示}private void toolstripbutton3_click(object nder, eventargs e)//选择转换文件的按钮{if (openfiledialog1.showdialog() == dialogresult.ok) //判断是否选择文件{listview1.items.clear(); //清空l紫河车的功效istview1string[] info = new string[7]; //存储每一行数据fileinfo fi; //创建一个fileinfo对象,用于获取图片信息path1 = openfiledialog1.filenames; //获取选择的图片集合for (int i = 0; i < path1.length; 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对象//将每一行数据第一个位置的图标添加到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] = "未转换"; //图片状态listviewitem lvi = new listviewitem(info, imgname); //实例化listviewitem对象listview1.items.add(lvi); //将信息添加到listview1控件中}tsslfilenum.text = "当前共有" + path1.length.tostring() + "个文件";//状态栏中显示图片数量}}private void toolstripbutton2_click(object nd钓鲤鱼技巧er, eventargs e) //关闭按钮{application.exit(); //退出系统}private void toolstripbutton5_click(object nder, eventargs e) //清空列表的按钮{ listview1.items.clear(); //清空列表path1 = null; //清空图片的集合tsslfilenum.text = "当前没有文件"; //状态栏中提示tsslplan.text = ""; //清空进度数字}private void toolstripbutton1_click(object nder, eventargs e){if (path1 == null) //判断是否选择图片{messagebox.show("请选择图片!", "提示", messageboxbuttons.ok, messageboxicon.information);}el{if (path2.length == 0) //判断是否选择保存位置{messagebox.show("请选择保存位置!", "提示", messageboxbuttons.ok, messageboxicon.information);}el{flags = 1; //初始化flags变量为1,用于计算进度toolstrip1.enabled = fal; //当转换开始时,禁用工具栏int flag = tscbtype.lectedindex; //判断将图片转换为何种格式switch (flag) //根据不同的格式进行转换{ca 0:imgtype1 = 0; //如果选择第一项则转换为bmp格式td = new thread(new threadstart(convertimage)); //通过线程调用convertimage方法进行转换td.start();break;ca 1: //如果选择第二项则转换为jpg格式imgtype1 = 1;td = new thread(new threadstart(convertimage));//通过线程调用convertimage方法进行转换td.start();break;ca 2: //如果选择第三项则转换为png格式imgtype1 = 2;td = new thread(new threadstart(convertimage));//通过线程调用convertimage方法进行转换td.start();break;ca 3: //如果选择第四项则转换为gif格式imgtype1 = 3;td = new thread(new threadstart(convertimage));//通过线程调用convertimage方法进行转换td.start();break;default: td.abort(); break;}}}}private void toolstripbutton4_click(object nder, eventargs e)//选择保存路径按钮{if (folderbrowrdialog1.showdialog() == dialogresult.ok) //判断是否选择保存路径{path2 = folderbrowrdialog1.lectedpath; //获取保存路径}}private void convertimage(){flags = 1;switch (imgtype1){ca 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].su隐形画bitems[6].text = "已转换";tsslplan.text = "正在转换"+flags*100/path1.length+"%";if (flags == path1.length){toolstrip1.enabled = true;tsslplan.text = "图片转换全部完成";}flags++;}break;ca 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 = "已转换";tsslplan.text = "正在转换" + flags * 100 / path1.length + "%";if (flags == path1.length){toolstrip1.enabled = true;tsslplan.text = "图片转换全部完成";}flags++;}break;ca 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 = "已转换";tsslplan.text = "正在转换" + flags * 100 / path1.length + "%";if (flags == path1.length){toolstrip1.enabled = true;tsslplan.text = "图片转换全部完成";}flags++;}break;ca 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 = "已转换";tsslplan.text = "正在转换" + flags * 100 / path1.length + "%";if (flags == path1.length){toolstrip1.enabled = true;tsslplan.text = "图片转换全部完成";}flags++;}break;default: bt.dispo(); break;}}private void form2_formclod(object nder, formclodeventargs e)//关闭窗口时要关闭线程{if (td != null) //判断是否存在线程{if (td.threadstate == threadstate.running) //然后判断线程是否正在运行{td.abort(); //如果运行则关闭线程}}}}}
完整源码下载
以上就是winform中实现图片格式转换的详细内容,更多关于winform 图片格式转换的资料请关注www.887551.com其它相关文章!
本文发布于:2023-04-04 12:18:45,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1dd19b20d801b8b7061e1a21fb95a0ec.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Winform中实现图片格式转换.doc
本文 PDF 下载地址:Winform中实现图片格式转换.pdf
留言与评论(共有 0 条评论) |