png转ico源码

    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 1)
                return;
            string imgName = args[0];
            Console.WriteLine("开始处理...");
            SaveToIcon(imgName);
            Console.WriteLine("处理完毕...");
            return ;
        }

        static void SaveToIcon(string srcImg)
        {
            Image img = Image.FromFile(srcImg);
            using(MemoryStream msImg=new MemoryStream(),msIco=new MemoryStream())
            {
                img.Save(msImg, System.Drawing.Imaging.ImageFormat.Png);
                using(var bin=new BinaryWriter(msIco))
                {
                    bin.Write((short)0);
                    bin.Write((short)1);
                    bin.Write((short)1);

                    bin.Write((byte)img.Width);
                    bin.Write((byte)img.Height);
                    bin.Write((byte)0);
                    bin.Write((byte)0);
                    bin.Write((short)0);
                    bin.Write((short)32);
                    bin.Write((int)msImg.Length);
                    bin.Write(22);

                    bin.Write(msImg.ToArray());
                    bin.Flush();
                    bin.Seek(0, SeekOrigin.Begin);
                    Icon icon = new Icon(msIco);
                    string outputName = Path.Join(Path.GetDirectoryName(srcImg), Path.GetFileNameWithoutExtension(srcImg) + ".ico");
                    using (Stream stream = new FileStream(outputName, FileMode.Create))
                    {
                        icon.Save(stream);
                    }
                }
            }
        }
    }

  

posted @ 2021-08-05 14:40  chyshx  阅读(507)  评论(0编辑  收藏  举报