文字,图片合成在背景图上

//str_img_bg背景图片路径

using (System.Drawing.Image pickedImage = new System.Drawing.Bitmap(str_img_bg))

            {

//str_img_head头像路径

                    using (StreamReader srhead = new StreamReader(str_img_head))

                    {

                        System.Drawing.Image img_head = System.Drawing.Image.FromStream(srhead.BaseStream, true);

                        img_head = KiResizeImage(img_head, width , height );//头像


                        //定位  

                        Rectangle fromRhead = new Rectangle(0, 0, 56, 56);//宽高

                        Rectangle toRhead = new Rectangle(12, 56, 12, 56);//嵌入图片的位置 x,y坐标 和 宽高。  

                        using (System.Drawing.Graphics pickedG = System.Drawing.Graphics.FromImage(pickedImage))

                        {

                            pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;

                            pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;


                            //导入图片  

                            pickedG.DrawImage(img_head, toRhead, fromRhead, System.Drawing.GraphicsUnit.Pixel);

                            //导入文字   emsize字体的全身大小(以磅值为单位)

                            //color字体颜色

                            //x,y在背景图上得x,y坐标

                             pickedG.DrawString(str_text, new Font("Microsoft YaHei", emsize), new SolidBrush(System.Drawing.ColorTranslator.FromHtml((color))), new PointF(x,y));

                       

                            //jpg文件输出  

                            ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();

                            ImageCodecInfo ici = null;

                            foreach (ImageCodecInfo i in icis)

                            {

                                if (i.MimeType == "image/jpeg")

                                {

                                    ici = i;

                                }

                            }

                            EncoderParameters ep = new EncoderParameters(1);

                            ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)90);

                            //保存图片

                            pickedImage.Save();

                            

                        }

                    }


                

  public static System.Drawing.Image KiResizeImage(System.Drawing.Image bmp, int newW, int newH, int Mode)

        {

            try

            {

                System.Drawing.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;

            }

        }

猜你喜欢

转载自blog.csdn.net/weixin_37948260/article/details/80880324