-
c# 高质量合成图片实例,避免模糊
往一张产品图片上,加两个小标签,Demo实现最好的效果
素材例图与最终效果如下:
具体实现的代码如下:
添加引用:
using System.Drawing; using System.Drawing.Drawing2D;
注意:如果添加命名空间没效果,加一下Nuget包 System.Drawing.Common
合成方法:
public string CombinImage( ) { Image imgBack = Image.FromFile("D:\\mmy\\Net6WebAPIDemo\\Net6WebAPIDemo\\Img\\imgBack.jpg"); Image imgPop = Image.FromFile("D:\\mmy\\Net6WebAPIDemo\\Net6WebAPIDemo\\Img\\imgPop.png"); Image imgStar = Image.FromFile("D:\\mmy\\Net6WebAPIDemo\\Net6WebAPIDemo\\Img\\imgStar.png"); Image img = imgBack; Graphics g = Graphics.FromImage(img); g.SmoothingMode = SmoothingMode.AntiAlias;//最高图片平滑算法 g.InterpolationMode = InterpolationMode.HighQualityBicubic;//最高质量图像插值算法 g.CompositingQuality = CompositingQuality.AssumeLinear;//最高质量图像合成算法 g.PixelOffsetMode= PixelOffsetMode.Half;//最高质量像素偏移 g.CompositingMode = CompositingMode.SourceOver;//图片合成模式覆盖 不控制图片质量 g.DrawImage(imgPop, 0, 0, imgPop.Width, imgPop.Height); g.DrawImage(imgStar, 0, imgPop.Height , imgStar.Width, imgStar.Height); img.Save("D:\\mmy\\Net6WebAPIDemo\\Net6WebAPIDemo\\Img\\Merge.jpg"); // 释放资源 imgBack.Dispose(); imgPop.Dispose(); imgStar.Dispose(); return "合并结束"; }
这个合成的效果和PS直接合成几乎没有区别
其实除了这种,还有一种合成方法,
就是直接空白画布,先画背景图,再依次画上两个图片,但那个实际合成出来,整个图片色调变暗,不知道为什么
这个直接用背景图当画布,再画上两个图标就没色差
实际应用过程中,提高图片合成质量的属性不一定全要用上,也不需要全部用属性的最高值就有非常好的效果
合成质量越高,合成速度越慢
Demo设定的都是极致,合成图片少的时候没影响,如果大批量需要适当减少属性的配置,以及降低对应属性的设定值
出处:https://www.cnblogs.com/fkcxy/p/17276755.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数