【问题标题】:VB.NET paste one image into another without losing qualityVB.NET 将一个图像粘贴到另一个图像中而不会丢失质量
【发布时间】:2020-08-17 16:22:18
【问题描述】:

我正在尝试创建用于将 png 图像粘贴到另一个图像的中心的 VB.NET 代码。我正在使用以下代码:

'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 中执行

【问题讨论】:

  • 质量可能是我们之前看到的。但是您可以尝试保存为 png 以进行测试,然后通过设置较低的压缩率来提高 jpg 质量。
  • 你知道 JPG 压缩是如何工作的吗?

标签: c# vb.net graphics bitmap


【解决方案1】:

下面的代码可以帮助你:

 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, 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2011-01-20
    相关资源
    最近更新 更多