using System;
using System.Collections.Generic;
using System.Web;
using System.Drawing;
using System.IO;
namespace EASAA.Common
{
    /// <summary>
    /// 生成Ico类
    /// </summary>
    public class IconMaker
    {
        /// <summary>
        /// 创建
        /// </summary>
        /// <param name="strfile">原图片路径,支持 *.jpg,*.png,*.bmp,*.gif</param>
        /// <param name="strIcofile">要生成的Ico全路径,如:C://upload/1/1.ico</param>
        /// <param name="_size">大小(一般传入16)</param>
        /// <returns></returns>
        public bool Create(string strfile, string strIcofile, int _size)
        {
            bool bol = false;
            try
            {
                Bitmap srcBitmap = new Bitmap(strfile);//用于保存原图
                Size size = new Size(_size, _size);//用于保存目标图标的大小           
                FileStream fs = new FileStream(strIcofile, FileMode.Create);
                Icon icon = ConvertBitmap2Ico(srcBitmap, size);
                icon.Save(fs);//将Icon保存的指定的输出
                fs.Close();
                bol = true;
            }
            catch (Exception ex)
            {
                // throw;
            }
            return bol;
        }
        /// <summary>
        /// 实现bitmap到ico的转换
        /// </summary>
        /// <param name="bitmap">原图</param>
        /// <returns>转换后的指定大小的图标</returns>
        private Icon ConvertBitmap2Ico(Bitmap bitmap, Size size)
        {
            Bitmap icoBitmap = new Bitmap(bitmap, size);//创建制定大小的原位图
            //获得原位图的图标句柄
            IntPtr hIco = icoBitmap.GetHicon();
            //从图标的指定WINDOWS句柄创建Icon
            Icon icon = Icon.FromHandle(hIco);
            return icon;
        }
    }
}