golang 創建圖片 並且添加 圖片 文字水印


package main

import (
    "fmt"
    "image"
    "image/color"
    "image/draw"
    "image/jpeg"
    "io/ioutil"
    "os"

    "github.com/golang/freetype"
)

// 創建寬 500 高 300 的圖片
const (
    w = 500
    h = 300
)

func main() {

    //返回一個矩形
    rectangle := image.Rect(0, 0, w, h)
    rgba := image.NewRGBA(rectangle)
    // 設置一條白色的斜線
    for y := 0; y < h; y++ {
        rgba.Set(y, y, color.RGBA{255, 255, 255, 1})
    }
    // 文字水印
    fontbyte, err := ioutil.ReadFile("./simhei.ttf")
    if err != nil {
        fmt.Println("ioutil.ReadFile error : ", err)
        return
    }
    font, err := freetype.ParseFont(fontbyte)
    if err != nil {
        fmt.Println("freetype.ParseFont error : ", err)
        return
    }
    // 創建一個新的上下文
    context := freetype.NewContext()
    context.SetDPI(70)                                             // 設置屏幕分辨率,單位為每英寸點數。
    context.SetClip(rgba.Bounds())                                 //設置用於繪制的剪輯矩形。
    context.SetDst(rgba)                                           //設置繪制操作的目標圖像。
    context.SetFont(font)                                          //設置用於繪制文本的字體。
    context.SetFontSize(16)                                        //以點為單位設置字體大小(如“12點字體”)。
    context.SetSrc(image.NewUniform(color.RGBA{255, 255, 255, 1})) //設置用於繪制操作的源圖像
    pt := freetype.Pt(10, 260)                                     //從一個以像素度量的坐標對轉換為一個固定的點
    context.DrawString("文字水印", pt)
    // 圖片水印
    img, _ := os.Open("./img.jpg")
    defer img.Close()
    img1, _ := jpeg.Decode(img) //讀取一個JPEG圖像並將其作為image.Image返回
    offset := image.Pt(300, 10)
    draw.Draw(rgba, img1.Bounds().Add(offset), img1, image.ZP, draw.Over)

    //創建圖片
    file, err := os.Create("./text.jpg")
    if err != nil {
        fmt.Println("os.Open error : ", err)
        return
    }
    // 將圖像寫入file
    //&jpeg.Options{100} 取值范圍[1,100],越大圖像編碼質量越高
    jpeg.Encode(file, rgba, &jpeg.Options{100})
    defer file.Close()
}

 效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM