往一張產品圖片上,加兩個小標簽,Demo實現最好的效果 素材例圖與最終效果如下: 具體實現的代碼如下: 添加引用: using System.Drawing; using System.Drawing.Drawing2D; 註意:如果添加命名空間沒效果,加一下Nuget包 System.Drawin ...
往一張產品圖片上,加兩個小標簽,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設定的都是極致,合成圖片少的時候沒影響,如果大批量需要適當減少屬性的配置,以及降低對應屬性的設定值