作者:T岛T_387 | 来源:互联网 | 2023-09-10 19:07
功能介绍:
[c#]图片转换ico图标程序及源码
经常需要将图片转成ico图标文件使用,现在很多在线转换功能也很不错。不过还是自己写一个本地的小程序使用更加方便~
通过配合之前写的图标提取的小工具非常奈斯~
提取到图标文件以后保存成.png图片,以备使用。接着使用图片转换工具将png、jpg等图片格式转成成ico文件,并保存到本地。
#图片转换ico图标程序.主要的功能实现:
1、读取本地文件素材
2、将本地图片素材换成无损icon图标文件
主要源码:
这里主要是参考了:
https://blog.csdn.net/u010317618/article/details/124449563
灰常感谢~
关键源代码:
///
/// 图片转换为ico文件
///
/// 原图片路径
///
输出ico文件路径
///
输出ico图标尺寸,不可大于255x255
/// 是否转换成功
public static bool ConvertImageToIcon(string origin, string destination, Size iconSize)
{if (iconSize.Width > 255 || iconSize.Height > 255){return false;}Image image = new Bitmap(new Bitmap(origin), iconSize); //先读取已有的图片为bitmap,并缩放至设定大小MemoryStream bitMapStream = new MemoryStream(); //存原图的内存流MemoryStream icOnStream= new MemoryStream(); //存图标的内存流image.Save(bitMapStream, ImageFormat.Png); //将原图读取为png格式并存入原图内存流BinaryWriter icOnWriter= new BinaryWriter(iconStream); //新建二进制写入器以写入目标图标内存流/*** 下面是根据原图信息,进行文件头写入*/iconWriter.Write((short)0);iconWriter.Write((short)1);iconWriter.Write((short)1);iconWriter.Write((byte)image.Width);iconWriter.Write((byte)image.Height);iconWriter.Write((short)0);iconWriter.Write((short)0);iconWriter.Write((short)32);iconWriter.Write((int)bitMapStream.Length);iconWriter.Write(22);//写入图像体至目标图标内存流iconWriter.Write(bitMapStream.ToArray());//保存流,并将流指针定位至头部以Icon对象进行读取输出为文件iconWriter.Flush();iconWriter.Seek(0, SeekOrigin.Begin);Stream icOnFileStream= new FileStream(destination, FileMode.Create);Icon icon = new Icon(iconStream);icon.Save(iconFileStream); //储存图像/*** 下面开始释放资源*/iconFileStream.Close();iconWriter.Close();iconStream.Close();bitMapStream.Close();icon.Dispose();image.Dispose();return File.Exists(destination);
}
调用方法及判断:
if (textBox1.Text.Length <= 0){MessageBox.Show("请先选择图片");return;}else if (textBox1.Text.ToLower().IndexOf("jpg") == -1 && textBox1.Text.ToLower().IndexOf("jpeg") == -1 && textBox1.Text.ToLower().IndexOf("png") == -1 && textBox1.Text.ToLower().IndexOf("bmp") == -1){MessageBox.Show("文件必须是图片");return;}string strSize = comboBox1.Text.Substring(comboBox1.Text.IndexOf("*") + 1);ConvertImageToIcon(textBox1.Text, System.Environment.CurrentDirectory + @"\" + str_FileName + ".ico", new Size(int.Parse(strSize), int.Parse(strSize)));
有分的来这下:「c#」图片转换ico图标程序及源码-C#文档类资源-CSDN下载
没分的来这下:
链接:https://pan.baidu.com/s/1MEXFq6MKW3HHoevnU0mmyQ
提取码:2jp6