c # / vb.net комбинирует изображение с прозрачной рамкой - PullRequest
0 голосов
/ 17 октября 2018

Я хочу объединить 2 изображения, вот пример.

У меня есть изображение грузовика и изображение карандаша, я хочу объединить их, как показано в нижнем ряду, созданный с помощью GIMP с помощью выбора изальфа, разверните и очистите.

enter image description here

На самом деле код минимален:

Dim base = Image.FromFile("small_truck.png")
Dim add As Bitmap = Bitmap.FromFile("pencil.png")
Dim frame As New Bitmap(base.Width, base.Height, Imaging.PixelFormat.Format32bppArgb)
Dim g = Graphics.FromImage(frame)
g.DrawImage(base, 0, 0)
g.DrawImage(add, base.Width - add.Width, base.Height - add.Height, add.Width, add.Height)
frame.Save("output.png")

кто-нибудь знает, как копировать gimpрабочий процесс?

1 Ответ

0 голосов
/ 17 октября 2018

Я сделал это!

Dim base = Image.FromFile("small_truck.png")
Dim add As Bitmap = Bitmap.FromFile("pencil.png")
Dim frame As New Bitmap(base.Width, base.Height, Imaging.PixelFormat.Format32bppArgb)
Dim g = Graphics.FromImage(frame)
g.DrawImage(base, 0, 0)
g.CompositingMode = CompositingMode.SourceCopy
Dim startx = base.Width - add.Width, starty = base.Height - add.Height
For y = 0 To add.Height - 1
    For x = 0 To add.Width - 1
        Dim c = add.GetPixel(x, y)
        If c.A >= 128 Then
            g.FillRectangle(Brushes.Transparent, startx + x - 1, starty + y - 1, 3, 3)
        End If
    Next
Next
g.CompositingMode = CompositingMode.SourceOver
g.DrawImage(add, startx, starty, add.Width, add.Height)
frame.Save("output_32.png")

Я держу здесь вопросы и ответы, может быть, это будет кому-то полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...