以前总是喜欢用在线的方法将图片转换ICO文件。要是没网就是没办法了。所以做了一个软件工具。将BMP,JPG,PNP,GIF.ICO转换为规定大小的ICO文件。

1.文件格式判断

不通过文件扩展名而是通过二进制文件头进行格式判断。

        /// <summary>/// 通过读取文件头,判断是否为图片格式,并输出至typename/// </summary>/// <param name="typename">图片格式</param>/// <param name="filePath">文件路径</param>/// <returns>是否为指定的几种图片格式</returns>private bool IsPicture(out string typename, string filePath){try{FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);BinaryReader reader = new BinaryReader(fs);string fileClass = "";byte[] cb = new byte[6];cb = reader.ReadBytes(6);if (cb[0] == 0){foreach (var bs in cb){fileClass += bs.ToString();}}else {for (int i = 0; i < 2;i++ ){fileClass += cb[i].ToString();}}reader.Close();fs.Close();if (fileClass == FILEHEAD_BMP|| fileClass == FILEHEAD_JPG|| fileClass == FILEHEAD_PNG|| fileClass == FILEHEAD_GIF|| fileClass == FILEHEAD_ICO){typename = fileClass;return true;}else{typename = "";return false;}}catch{typename = "";return false;}}

2.转换Image为Icon

这个代码我也是从网上找的,也不知道原创是谁了,因为很多文章都有。

        /// <summary>/// 转换Image为Icon/// </summary>/// <param name="image">要转换为图标的Image对象</param>public static Icon ConvertToIcon(Image image ){if (image == null){return null; }using (MemoryStream msImg = new MemoryStream(), msIco = new MemoryStream()){image.Save(msImg, ImageFormat.Png);using (var bin = new BinaryWriter(msIco)){//写图标头部bin.Write((short)0);           //0-1保留bin.Write((short)1);           //2-3文件类型。1=图标, 2=光标bin.Write((short)1);           //4-5图像数量(图标可以包含多个图像)bin.Write((byte)image.Width);  //6图标宽度bin.Write((byte)image.Height); //7图标高度bin.Write((byte)0);            //8颜色数(若像素位深>=8,填0。这是显然的,达到8bpp的颜色数最少是256,byte不够表示)bin.Write((byte)0);            //9保留。必须为0bin.Write((short)0);           //10-11调色板bin.Write((short)32);          //12-13位深bin.Write((int)msImg.Length);  //14-17位图数据大小bin.Write(22);                 //18-21位图数据起始字节//写图像数据bin.Write(msImg.ToArray());bin.Flush();bin.Seek(0, SeekOrigin.Begin);return new Icon(msIco);}}}

3.界面

拖几个按钮,label,panel,设置主窗体允许拖拽文件,几个事件,等等。工具类经常要置顶功能所以加了置顶开关。界面如下:

设置需要输出的ICO大小,然后把一张图片拖进窗体或者通过按钮打开,就可以转换,保存为ICO了。

ps:有个问题,就是文件名太长的话,状态栏会不显示!而不是只显示一部分,真奇葩。

PS:加上源码打包下载

http://download.csdn.net/download/wangzibigan/10216891

C# 图片转换ICO工具相关推荐

  1. 计算机桌面上的照片转pdf免费,如何把图片转化为pdf,图片转换pdf工具推荐

    我们经常遇到要将图片转换成pdf文件输出的情况,那么我们有什么办法能更快更好进行转换呢?小编今天给大家带来两个办法,一个是手机上操作的,另一个是电脑上的方法,实测好用! 手机端转换 手机上小编一般会使 ...

  2. HEIC图片转换格式工具

    HEIC图片现在可以直接在电脑上查看了,但是有些时候还是需要转换格式才能使用,而且转换图片格式需要使用格式转换工具. 我们可以在网上找一些可以转换图片格式的网站,也可以选择专业的转换格式工具,比如奥凯 ...

  3. 图片转ICO工具新版本(支持更多图片格式,支持更多分辨率,原生更快)

    纯Win32 API开发, 支持JPG.BMP.TIFF.ICO.PNG等所有常用格式 支持更多分辨率8x8, ...  1024x1024 支持原生图片尺寸大小 支持文件拖放打开 下载地址: htt ...

  4. 图片转换成ico应用程序(pyqt5/exe)

    用python的话,核心代码很简单: from PIL import Image img = Image.open(r"C:\Users\xigua\Desktop\Vscode\ico\无 ...

  5. 用QT制作图片转换成ICO格式 领卓教育

    头文件      UI页面自己设计自己的页面,槽函数改下就可以 #include "app.h" #include "ui_app.h" #include &l ...

  6. java图片转换pdf_Java实现图片转换PDF文件的示例代码

    最近因为一些事情,需要将一张简单的图片转换为PDF的文件格式,在网上找了一些工具,但是这些工具不是需要注册账号,就是需要下载软件. 而对于只是转换一张图片的情况下,这些操作显然是非常繁琐的,所以作者就 ...

  7. python将图片转换成二进制文本_python将图片文件转换成base64编码的方法

    本文实例讲述了python将图片文件转换成base64编码的方法.分享给大家供大家参考.具体实现方法如下: import base64f=open(r'c:\jb51.gif','rb') #二进制方 ...

  8. C#实现把图片转换为ico格式

    ico格式是我们常见的一种图标格式,曾经常常通过一些别的软件进行转换,现在研究了一下C#其实也可以进行转换. 网上很多方法是通过Bitmap直接获取句柄转为Icon对象并保存,这样得到的ico质量非常 ...

  9. Java实现图片转换PDF文件

    文章目录 引入依赖 前端页面 控制层接口 PDF工具类 页面效果 最近因为一些事情,需要将一张简单的图片转换为PDF的文件格式,在网上找了一些工具,但是这些工具不是需要注册账号,就是需要下载软件. 而 ...

  10. java 图片不失真缩放,ico格式图片转换,透明图层,jar->exe

    Java 图片缩放,转ico格式 Java 在转换图片格式为 ico 时 需要引入 image4j 的依赖,这里分享一个自己写好的并通过exe4j 打包好的exe小程序.因为功能太少所以再引入 thu ...

最新文章

  1. python面试常见问题-Python面试常见问题,涉及Python各个方面
  2. 设计模式:享元模式(Flyweight Pattern)
  3. linux上yum最简方法安装,yum轻松简单安装配置GCC等
  4. v8引擎和v12引擎_v8和v12发动机的区别
  5. mysql 虚拟表 分页_MySql大表分页(附独门秘技)
  6. python使用多线程(二)
  7. 上海嵌联自控供应车流量统计系统
  8. 【统计信号处理检测理论:CFAR检测】
  9. 给Android平板添加字体,以华为平板为例
  10. CTGU实验5_2-创建借书触发器
  11. 校园宽带网更换/安装路由器指南
  12. [2023年的每一天]1. 15 看了一天的 B站
  13. html app下载页功能开发
  14. python服务启动调试的时候报错:SyntaxError: (“Non-ASCII character ‘\\xca‘ in file......解决办法
  15. 如何完美的转载其他博主的博文
  16. 终于做了这个决定, 准备认认真真的学习java啦,
  17. Hardfault调试方法(调试技术)
  18. QCustomPlot之盒须图(十六)
  19. 福州古刹梅花盛开 古装赏梅成“娇点”
  20. windows 下 vs2008 编译 OpenCV 库

热门文章

  1. 神经网络之输出层设计
  2. 6. 文本分类——transformer模型
  3. SSM+中小型企业绩效管理系统毕业设计-附源码081536
  4. 名企笔试:2015小米暑期实习(风口的猪-中国牛市)(2017-04-09 算法爱好者)
  5. 多媒体计算机技术中处理的媒体元素,系统架构设计师多媒体技术基本概念
  6. 游戏更新-拖拉机升级 Android
  7. python 全角字符和半角字符切换
  8. Online Adaptation of Convolutional Neural Networks for Video Object Segmentation论文阅读
  9. 【OpenGL】笔记二十一、Alpha测试、混合测试
  10. atomic头文件编译_c++11 多线程(3)atomic 总结