语言吧技术网欢迎您投稿,程序员的世界我懂你!=====>点此登录投搞
当前位置: 首页 >>ASP.NET >>ASP.NET实战 >>C#文字、图片合并生成合成图片

C#文字、图片合并生成合成图片

2019/2/20 17:47:10 0人评论 115次 作者:admin

C#一些常用的图片操作方法:生成文字图片 合并图片等…

        #region 生成合成图片

        public void DoImg()

        {

            //生成邀请码图片 字符间距 带空格比较简单

            //Image img = CreateImage("1 2 3 4 5 6", true, 12);


            //修改照片分辨率大小

            //img = ResizeImage(img, 200, 100);


            //保存邀请码图片

            //img.Save("D:/3.jpg");


            //开始合并图片

            Image ibpic = Image.FromFile("D:/DoIMg/JZ_500_788.png");

            Image inpic = Image.FromFile("D:/DoIMg/JZ_Tou.png");

            Bitmap bmp = CombinImage(ibpic, inpic, 0, 0);

            bmp.Save("D:/DoIMg/JZ_500_788_New.jpg", ImageFormat.Jpeg);


            string HdhWord = "何冬华";

            Image img = CreateImage(HdhWord, true, 20, 104, 30);

            img = ResizeImage(img, 104, 30);

            ibpic = bmp;

            Bitmap bmp1 = CombinImage(ibpic, img, -185, -97);

            bmp1.Save("D:/DoIMg/JZ_500_788_New1.jpg", ImageFormat.Jpeg);

        }

        /// <summary>

        /// 生成文字图片

        /// </summary>

        /// <param name="text"></param>

        /// <param name="isBold"></param>

        /// <param name="fontSize"></param>

        public Image CreateImage(string text, bool isBold, int fontSize,int wid,int high)

        {

            //int wid = 400;

            //int high = 200;

            Font font;

            if (isBold)

            {

                font = new Font("Arial", fontSize, FontStyle.Bold);


            }

            else

            {

                font = new Font("Arial", fontSize, FontStyle.Regular);


            }

            //绘笔颜色

            SolidBrush brush = new SolidBrush(Color.Black);

            StringFormat format = new StringFormat(StringFormatFlags.NoClip);

            format.Alignment = StringAlignment.Center;

            format.LineAlignment = StringAlignment.Center;

            Bitmap image = new Bitmap(wid, high);

            Graphics g = Graphics.FromImage(image);

            g.Clear(Color.White);//透明


            RectangleF rect = new RectangleF(0, 0, wid, high);

            //绘制图片

            g.DrawString(text, font, brush, rect, format);

            //释放对象

            g.Dispose();

            return image;

        }


        /// <summary>  

        /// 合并图片  

        /// </summary>  

        /// <param name="imgBack"></param>  

        /// <param name="img"></param>  

        /// <returns></returns>  

        public static Bitmap CombinImage(Image imgBack, Image img, int xDeviation = 0, int yDeviation = 0)

        {

            Bitmap bmp = new Bitmap(imgBack.Width, imgBack.Height);

            Graphics g = Graphics.FromImage(bmp);

            g.Clear(Color.White);

            g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);

            //白色边框

            g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 + xDeviation - 1, imgBack.Height / 2 - img.Height / 2 + yDeviation - 1, img.Width + 2, img.Height + 2);

            //填充图片

            g.DrawImage(img, imgBack.Width / 2 - img.Width / 2 + xDeviation, imgBack.Height / 2 - img.Height / 2 + yDeviation, img.Width, img.Height);

            GC.Collect();

            return bmp;

        }


        /// <summary>  

        /// Resize图片  

        /// </summary>  

        /// <param name="bmp">原始Bitmap</param>  

        /// <param name="newW">新的宽度</param>  

        /// <param name="newH">新的高度</param>  

        /// <returns>处理以后的图片</returns>  

        public static Image ResizeImage(Image bmp, int newW, int newH)

        {

            try

            {

                Image b = new Bitmap(newW, newH);

                Graphics g = Graphics.FromImage(b);


                // 插值算法的质量    

                g.InterpolationMode = InterpolationMode.HighQualityBicubic;

                g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height),

                            GraphicsUnit.Pixel);

                g.Dispose();

                return b;

            }

            catch

            {

                return null;

            }

        }

        #endregion


相关文章

CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-4 http://www.yuyanba.com
分享按钮