如何解决VB.NET将一个图像粘贴到另一个图像而不会降低质量
我正在尝试创建VB.NET代码,以将png图像粘贴到另一个图像的中心。我正在使用以下代码:
'create new image with watermark
Dim backImg = Image.FromFile("image path")
Dim mrkImg = Image.FromFile("watermark.png")
Dim g = Graphics.FromImage(backImg)
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
Dim x = Convert.ToSingle((backImg.Width / 2) - (mrkImg.Width / 2))
Dim y = Convert.ToSingle((backImg.Height / 2) - (mrkImg.Height / 2))
g.DrawImage(mrkImg,x,y)
backImg.Save("result.jpg")
这是可行的,但我注意到质量下降:
(蓝色是实际图像,红色是png的一部分。请注意边缘。)
我该如何做才能保持完整品质?我已经在python中实现了相同的功能而又没有失去任何质量,但是不确定如何在VB.NET中做
解决方法
下面的代码可以帮助您:
Using backImg As Bitmap = New Bitmap(Bitmap.FromFile("C:\Users\User\Desktop\test1.png"))
Using mrkImg = Image.FromFile("C:\Users\User\Desktop\test2.png")
Using final As Bitmap = New Bitmap(backImg.Width,backImg.Height)
final.SetResolution(CSng(backImg.HorizontalResolution),CSng(backImg.VerticalResolution))
Using g = Graphics.FromImage(final)
g.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality
g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.DrawImage(backImg,0)
g.DrawImage(mrkImg,CSng((backImg.Width - mrkImg.Width) * 0.5),CSng((backImg.Height - mrkImg.Height) * 0.5))
End Using
final.Save("C:\Users\User\Desktop\testResult.jpg")
End Using
End Using
End Using
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。