博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go原生库简单合成一张图
阅读量:2071 次
发布时间:2019-04-29

本文共 2011 字,大约阅读时间需要 6 分钟。

需求,将背景图和二维码图合成一张图片

1.准备两张图

300*300的图

256*256的图

2.准备功能方法

package mainimport (	"image"	"image/draw"	"image/jpeg"	"image/png"	"os")func main() {	//简单合成图	createImg()}func createImg() {	//背景图	//如果是windows 换成c:/1.jpg	imgb, _ := os.Open("/Users/dong/Desktop/1.jpg")	img, _ := jpeg.Decode(imgb)	defer imgb.Close()	//添加图	//如果是windows 换成c:/1.jpg	wmb, _ := os.Open("/Users/dong/Desktop/2.png")	watermark, _ := png.Decode(wmb)	defer wmb.Close()	//坐标偏差,x轴y轴,这个自己算一下	offset := image.Pt(22, 22)	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)	//如果是windows 换成c:/1.jpg	imgw, _ := os.Create("/Users/dong/Desktop/3.jpg")	jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality})	defer imgw.Close()}

3.效果如图

17:00

第二版动态带计算位置,默认设置集中,可以自行调整位置

package mainimport (	"image"	"image/draw"	"image/jpeg"	"image/png"	"os")func main() {	//简单合成图	createImg()}func createImg() {	//背景图	//如果是windows 换成c:/1.jpg	backgroudImgFile, _ := os.Open("/Users/dong/Desktop/1.jpg")	backgroudImg, _ := jpeg.Decode(backgroudImgFile)	defer backgroudImgFile.Close()	backgroudBound := backgroudImg.Bounds()	//x轴坐标总数	backgroudX := backgroudBound.Size().X	//y轴坐标总数	backgroudY := backgroudBound.Size().Y	//添加图	//如果是windows 换成c:/1.jpg	centerImgFile, _ := os.Open("/Users/dong/Desktop/2.png")	centerImg, _ := png.Decode(centerImgFile)	defer centerImgFile.Close()	centerBound := centerImg.Bounds()	//x轴坐标总数	centerX := centerBound.Size().X	//y轴坐标总数	centerY := centerBound.Size().Y	//坐标偏差,x轴y轴 计算	newImgX := (backgroudX - centerX) / 2	newImgY := (backgroudY - centerY) / 2	offset := image.Pt(newImgX, newImgY)	//x轴坐标总数	m := image.NewRGBA(backgroudBound)	draw.Draw(m, backgroudBound, backgroudImg, image.ZP, draw.Src)	draw.Draw(m, centerImg.Bounds().Add(offset), centerImg, image.ZP, draw.Over)	//如果是windows 换成c:/1.jpg	imgw, _ := os.Create("/Users/dong/Desktop/3.jpg")	jpeg.Encode(imgw, m, &jpeg.Options{jpeg.DefaultQuality})	defer imgw.Close()}

特殊说明:

如果需要缩放,可以参考

 

转载地址:http://kfpmf.baihongyu.com/

你可能感兴趣的文章
关于文件拷贝效率问题
查看>>
MyBatis分页插件PageHelper的使用
查看>>
【MyBatis学习01】宏观上把握MyBatis框架
查看>>
【MyBatis学习02】走进MyBatis的世界
查看>>
【MyBatis学习03】原始dao开发方法及其弊端
查看>>
【MyBatis学习04】mapper代理方法开发dao
查看>>
【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
查看>>
【MyBatis学习06】输入映射和输出映射
查看>>
【MyBatis学习07】动态sql
查看>>
【MyBatis学习08】高级映射之一对一查询
查看>>
【MyBatis学习09】高级映射之一对多查询
查看>>
【MyBatis学习10】高级映射之多对多查询
查看>>
【MyBatis学习11】MyBatis中的延迟加载
查看>>
【MyBatis学习12】MyBatis中的一级缓存
查看>>
【MyBatis学习13】MyBatis中的二级缓存
查看>>
【MyBatis学习14】MyBatis和Spring整合
查看>>
【MyBatis学习15】MyBatis的逆向工程生成代码
查看>>
Java 中 final、finally 和 finalize 使用总结
查看>>
volatile关键字解析
查看>>
单例模式的八种写法比较
查看>>