Python实现将一张图片放到另一张图片指定的位置上并合成一张图 您所在的位置:网站首页 醒图怎么在一张图片上叠加一张照片 Python实现将一张图片放到另一张图片指定的位置上并合成一张图

Python实现将一张图片放到另一张图片指定的位置上并合成一张图

2024-07-09 19:51| 来源: 网络整理| 查看: 265

Python实现将一张图片放到另一张图片指定的位置上并合成一张图 # -*- coding: utf-8 -*- # by:Apsinc # time:2019年12月10日 #Python实现将一张图片放到另一张图片指定的位置上并合成一张图 from PIL import Image path = "C:/Users/Administrator/Desktop/QRCode/background.jpg"#母图详细文件名以及路径 img = Image.open(path) # img = qr.make_image(fill_color="#555555", back_color="Red") img = img.convert("RGBA") # CMYK/RGBA 转换颜色格式(CMYK用于打印机的色彩,RGBA用于显示器的色彩) # 添加子图 icon = Image.open("C:/Users/Administrator/Desktop/QRCode/zitu.png")#子图文件名 # 获取图片的宽高 img_w, img_h = img.size#获取被放图片的大小(母图) icon_w,icon_h=icon.size#获取小图的大小(子图) factor = 6 size_w = int(img_w / factor) size_h = int(img_h / factor) icon_w, icon_h = icon.size #防止子图尺寸大于母图 if icon_w > size_w: icon_w = size_w if icon_h > size_h: icon_h = size_h # # 重新设置子图的尺寸 # icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) w = int((img_w - icon_w) / 2) h = int((img_h - icon_h) / 2) # 粘贴图片 img.paste(icon, (w, h), mask=None) # 保存图片 img.save("C:/Users/Administrator/Desktop/QRCode/c.png")#合成后的图片路径以及文件名

为了方便下次调用最好封装成为模块

from PIL import Image def Picture_Synthesis(mother_img, son_img, save_img, coordinate=None): """ :param mother_img: 母图 :param son_img: 子图 :param save_img: 保存图片名 :param coordinate: 子图在母图的坐标 :return: """ #将图片赋值,方便后面的代码调用 M_Img = Image.open(mother_img) S_Img = Image.open(son_img) factor = 1#子图缩小的倍数1代表不变,2就代表原来的一半 #给图片指定色彩显示格式 M_Img = M_Img.convert("RGBA") # CMYK/RGBA 转换颜色格式(CMYK用于打印机的色彩,RGBA用于显示器的色彩) # 获取图片的尺寸 M_Img_w, M_Img_h = M_Img.size # 获取被放图片的大小(母图) print("母图尺寸:",M_Img.size) S_Img_w, S_Img_h = S_Img.size # 获取小图的大小(子图) print("子图尺寸:",S_Img.size) size_w = int(S_Img_w / factor) size_h = int(S_Img_h / factor) # 防止子图尺寸大于母图 if S_Img_w > size_w: S_Img_w = size_w if S_Img_h > size_h: S_Img_h = size_h # # 重新设置子图的尺寸 # icon = S_Img.resize((S_Img_w, S_Img_h), Image.ANTIALIAS) icon = S_Img.resize((S_Img_w, S_Img_h), Image.ANTIALIAS) w = int((M_Img_w - S_Img_w) / 2) h = int((M_Img_h - S_Img_h) / 2) try: if coordinate==None or coordinate=="": coordinate=(w, h) # 粘贴子图到母图的指定坐标(当前居中) M_Img.paste(icon, coordinate, mask=None) else: print("已经指定坐标") # 粘贴子图到母图的指定坐标(当前居中) M_Img.paste(icon, coordinate, mask=None) except: print("坐标指定出错 ") # 保存图片 M_Img.save(save_img)

调用方法

Picture_Synthesis(mother_img="C:/Users/Administrator/Desktop/QRCode/b.jpg", son_img="C:/Users/Administrator/Desktop/QRCode/y.png", save_img="C:/Users/Administrator/Desktop/QRCode/newimg.png", coordinate=None#如果为None表示直接将子图在母图中居中也可以直接赋值坐标 # coordinate=(50,50) )

母图 母图 子图 子图 最终效果最终效果 好的,这就不必过多的介绍代码了,全在注释中,有问题欢迎留言!有错误也欢迎您慷慨指正!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有