Подтвердить что ты не робот

Манипулирование изображениями водяных знаков с помощью Go

Я хочу найти что-то о создании примеров водяного знака, написанных на языке Go!

Мне нужно изображение PNG для изображения водяного знака, которое может быть применено к другим форматам PNG, GIF, JPEG и т.д.,

Надеюсь, вы можете привести несколько практических примеров.

4b9b3361

Ответ 1

Как уже упоминалось, вы можете наносить водяные знаки изображения с помощью пакета image/draw.

Вот быстрый практический пример: добавление прозрачного png-изображения в jpeg-изображение и сохранение как jpeg:

package main

import (
    "image"
    "image/draw"
    "image/jpeg"
    "image/png"
    "os"
)

func main() {
    imgb, _ := os.Open("image.jpg")
    img, _ := jpeg.Decode(imgb)
    defer imgb.Close()

    wmb, _ := os.Open("watermark.png")
    watermark, _ := png.Decode(wmb)
    defer wmb.Close()

    offset := image.Pt(200, 200)
    b := img.Bounds()
    m := image.NewRGBA(b)
    draw.Draw(m, b, img, image.ZP, draw.Src)
    draw.Draw(m, watermark.Bounds().Add(offset), watermark, image.ZP, draw.Over)

    imgw, _ := os.Create("watermarked.jpg")
    jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality})
    defer imgw.Close()
}

image.jpg:

enter image description here

watermark.png:

enter image description here

результат:

enter image description here