婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > golang 生成二維碼海報(bào)的實(shí)現(xiàn)代碼

golang 生成二維碼海報(bào)的實(shí)現(xiàn)代碼

熱門標(biāo)簽:烏魯木齊人工電銷機(jī)器人系統(tǒng) 智能電銷機(jī)器人營(yíng)銷 長(zhǎng)沙ai機(jī)器人電銷 澳門防封電銷卡 福州鐵通自動(dòng)外呼系統(tǒng) 地圖標(biāo)注測(cè)試 濮陽(yáng)自動(dòng)外呼系統(tǒng)代理 賺地圖標(biāo)注的錢犯法嗎 廣東語(yǔ)音外呼系統(tǒng)供應(yīng)商

生成帶頭像的二維碼

import ( 
 "errors" 
 "fmt"
 "github.com/nfnt/resize" 
 "github.com/skip2/go-qrcode" 
 "image" 
 "image/draw" 
 "image/png" 
 "os"
 ) 
 
var err error 
 
func createAvatar() (image.Image, error) { 
 var ( 
 bgImg  image.Image 
 offset  image.Point 
 avatarFile *os.File 
 avatarImg image.Image 
 ) 
 
 bgImg, err = createQrCode("http://www.baidu.com") 
 
 if err != nil { 
 fmt.Println("創(chuàng)建二維碼失敗:", err) 
 return nil, errors.New("創(chuàng)建二維碼失敗") 
 } 
 avatarFile, err = os.Open("./avatar.png") 
 avatarImg, err = png.Decode(avatarFile) 
 avatarImg = ImageResize(avatarImg, 40, 40) 
 b := bgImg.Bounds() 
 
 // 設(shè)置為居中 
 offset = image.Pt((b.Max.X-avatarImg.Bounds().Max.X)/2, (b.Max.Y-avatarImg.Bounds().Max.Y)/2) 
 
 m := image.NewRGBA(b) 
 
 draw.Draw(m, b, bgImg, image.Point{X: 0, Y: 0,}, draw.Src) 
 
 draw.Draw(m, avatarImg.Bounds().Add(offset), avatarImg, image.Point{X: 0, Y: 0}, draw.Over) 
 
 return m, err 
} 
 
func createQrCode(content string) (img image.Image, err error) { 
 var qrCode *qrcode.QRCode 
 
 qrCode, err = qrcode.New(content, qrcode.Highest) 
 
 if err != nil { 
 return nil, errors.New("創(chuàng)建二維碼失敗") 
 } 
 qrCode.DisableBorder = true 
 
 img = qrCode.Image(150) 
 
 return img, nil 
} 
 
func ImageResize(src image.Image, w, h int) image.Image { 
 return resize.Resize(uint(w), uint(h), src, resize.Lanczos3) 
}

預(yù)覽

合成到海報(bào)

func main() { 
 var ( 
 bgFile *os.File 
 bgImg  image.Image 
 qrCodeImg image.Image 
 offset image.Point 
 ) 
 
 // 01: 打開背景圖片 
 bgFile, err = os.Open("./bg.png") 
 if err != nil { 
 fmt.Println("打開背景圖片失敗", err) 
 return 
 } 
 
 defer bgFile.Close() 
 
 // 02: 編碼為圖片格式 
 bgImg, err = png.Decode(bgFile) 
 if err != nil { 
 fmt.Println("背景圖片編碼失敗:", err) 
 return 
 } 
 
 // 03: 生成二維碼 
 qrCodeImg, err = createAvatar() 
 if err != nil { 
 fmt.Println("生成二維碼失敗:", err) 
 return 
 } 
 
 offset = image.Pt(426, 475) 
 
 b := bgImg.Bounds() 
 
 m := image.NewRGBA(b) 
 
 draw.Draw(m, b, bgImg, image.Point{X: 0, Y: 0,}, draw.Src) 
 
 draw.Draw(m, qrCodeImg.Bounds().Add(offset), qrCodeImg, image.Point{X: 0, Y: 0}, draw.Over) 
 
 // 上傳至oss時(shí)這段要改 
 i, _ := os.Create(path.Base("a2.png")) 
 
 _ = png.Encode(i, m) 
 
 defer i.Close() 
 
}

預(yù)覽

上傳至阿里云

func ossClient() (bucket *alioss.Bucket, err error) { 
 var ( 
 key string = "xxx" 
 bucketName string = "xxx" 
 secret string = "xxx" 
 endpoint string = "xxx" 
 ) 
 
 // 創(chuàng)建OSSClient實(shí)例。 
 client, err = alioss.New(endpoint, key, secret) 
 
 if err != nil { 
 fmt.Println("獲取阿里云oss實(shí)例失敗:", err) 
 return nil, errors.New("資源服務(wù)器配置有誤") 
 } 
 // 獲取存儲(chǔ)空間。 
 bucket, err = client.Bucket(bucketName) 
 
 if err != nil { 
 logger.Error("獲取阿里云oss存儲(chǔ)空間錯(cuò)誤:", err) 
 return nil, errors.New("獲取存儲(chǔ)服務(wù)器失敗") 
 } 
 return bucket, nil 
}

開始上傳

將之前注釋的那段刪除 修改成這段
bucket, err = ossClient() 
 
if err != nil { 
 fmt.Println("error:", err) 
 return 
} 
 
imgBuff := bytes.NewBuffer(nil) //開辟一個(gè)新的空buff 
err = png.Encode(imgBuff, m) //img寫入到buff 
 
if err != nil { 
 fmt.Println("寫入緩沖區(qū)失敗",err) 
 return
} 
 
err = bucket.PutObject("qrcode/2-1.png", imgBuff) 
 
fmt.Println("error:", err)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Golang中生成隨機(jī)字符串并復(fù)制到粘貼板的方法
  • golang生成指定位數(shù)的隨機(jī)數(shù)的方法
  • Golang map如何生成有序的json數(shù)據(jù)詳解
  • 在Golang代碼中如何自動(dòng)生成版本號(hào)的方法示例
  • 利用Golang生成整數(shù)隨機(jī)數(shù)方法示例
  • Golang編程實(shí)現(xiàn)生成n個(gè)從a到b不重復(fù)隨機(jī)數(shù)的方法

標(biāo)簽:德州 太原 調(diào)研邀請(qǐng) 貴陽(yáng) 廣西 阿克蘇 慶陽(yáng) 西雙版納

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang 生成二維碼海報(bào)的實(shí)現(xiàn)代碼》,本文關(guān)鍵詞  golang,生成,二維,碼海,報(bào)的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang 生成二維碼海報(bào)的實(shí)現(xiàn)代碼》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于golang 生成二維碼海報(bào)的實(shí)現(xiàn)代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 临沧市| 永康市| 固安县| 长武县| 南靖县| 新巴尔虎左旗| 东乌珠穆沁旗| 江川县| 阜南县| 阜新市| 修武县| 阳谷县| 岳阳市| 满洲里市| 张掖市| 铜鼓县| 普格县| 诏安县| 泰州市| 永新县| 丰宁| 辽宁省| 涞源县| 东乌| 平江县| 上蔡县| 定安县| 景东| 武强县| 托克托县| 都安| 壶关县| 乐至县| 高唐县| 忻城县| 乌恰县| 颍上县| 平度市| 儋州市| 福泉市| 固原市|