使用Go操作水印图像 [英] Manipulating watermark images with Go

查看:234
本文介绍了使用Go操作水印图像的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我需要一个用于水印图像的PNG图像,它可以应用于其他格式PNG,GIF,JPEG等,

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

解决方案

如前所述,您可以使用图像/绘制包对图像进行水印处理。



下面是一个快速实用的示例, image to jpeg image and save as 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)
水印,_:= png.Decode(wmb)
defer wmb.Close()

偏移量:= 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:


watermark.png:





结果:


I want to find something about making the watermark image examples, written in Go language!

I need a PNG image for the watermark image, that can be applied to other formats PNG, GIF, JPEG etc.,

I hope you can give me some practical examples.

解决方案

As already mentioned, you can watermark images with the image/draw package.

Here's a quick practical example, adding a transparent png image to a jpeg image and saving as 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:

watermark.png:

result:

这篇关于使用Go操作水印图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆