image - 使用 Go 处理水印图像

标签 image image-processing go watermark

我想找一些关于制作水印图片的例子,用Go语言写的!

我需要一个PNG图片作为水印图片,可以应用于其他格式PNG、GIF、JPEG等,

希望你能给我一些实际的例子。

最佳答案

如前所述,您可以使用 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()
}

图片.jpg:

enter image description here

水印.png:

enter image description here

结果:

enter image description here

关于image - 使用 Go 处理水印图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16100023/

相关文章:

javascript - 将十六进制字符串转换为 Blob 并使用 AngularJS 显示 PNG 图片

python - cv2.imshow() 函数如何在 BGR 模型中工作?

android - 在 C# 中使用 BitmapFactory.DecodeFile 时内存占用量较大(对于小图像占用大量内存)

c++ - 问题访问/编辑 Mat 图像中的像素位置

Python:处理图像并保存到文件流

flutter - 如何访问 Flutter for desktop (macOS) 应用程序中的方法

struct - 用另一个结构分配结构

c# - GDI+ 中的 System.Drawing.Image.Save 发生一般性错误

c++ - 使用棋盘的 OpenCV 变换

go - 如何测量压缩前后的字节大小和时间