c# 高质量合成图片实例,避免模糊

打印 上一主题 下一主题

主题 526|帖子 526|积分 1578

往一张产品图片上,加两个小标签,Demo实现最好的效果
素材例图与最终效果如下:

具体实现的代码如下:
添加引用:
  1. using System.Drawing;
  2. using System.Drawing.Drawing2D;
复制代码
注意:如果添加命名空间没效果,加一下Nuget包 System.Drawing.Common
合成方法:
  1. public string CombinImage( )
  2. {
  3. Image imgBack = Image.FromFile("D:\\mmy\\Net6WebAPIDemo\\Net6WebAPIDemo\\Img\\imgBack.jpg");
  4. Image imgPop = Image.FromFile("D:\\mmy\\Net6WebAPIDemo\\Net6WebAPIDemo\\Img\\imgPop.png");
  5. Image imgStar = Image.FromFile("D:\\mmy\\Net6WebAPIDemo\\Net6WebAPIDemo\\Img\\imgStar.png");
  6. Image img = imgBack;
  7. Graphics g = Graphics.FromImage(img);
  8. g.SmoothingMode = SmoothingMode.AntiAlias;//最高图片平滑算法
  9. g.InterpolationMode = InterpolationMode.HighQualityBicubic;//最高质量图像插值算法
  10. g.CompositingQuality = CompositingQuality.AssumeLinear;//最高质量图像合成算法
  11. g.PixelOffsetMode= PixelOffsetMode.Half;//最高质量像素偏移
  12. g.CompositingMode = CompositingMode.SourceOver;//图片合成模式覆盖 不控制图片质量
  13. g.DrawImage(imgPop, 0, 0, imgPop.Width, imgPop.Height);
  14. g.DrawImage(imgStar, 0, imgPop.Height , imgStar.Width, imgStar.Height);
  15. img.Save("D:\\mmy\\Net6WebAPIDemo\\Net6WebAPIDemo\\Img\\Merge.jpg");
  16. // 释放资源
  17. imgBack.Dispose();
  18. imgPop.Dispose();
  19. imgStar.Dispose();
  20. return "合并结束";
  21. }
复制代码
这个合成的效果和PS直接合成几乎没有区别
其实除了这种,还有一种合成方法,
就是直接空白画布,先画背景图,再依次画上两个图片,但那个实际合成出来,整个图片色调变暗,不知道为什么
这个直接用背景图当画布,再画上两个图标就没色差
实际应用过程中,提高图片合成质量的属性不一定全要用上,也不需要全部用属性的最高值就有非常好的效果
合成质量越高,合成速度越慢
Demo设定的都是极致,合成图片少的时候没影响,如果大批量需要适当减少属性的配置,以及降低对应属性的设定值
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表