**导语:**有时候为了提升效率节省时间,我们需要对文件夹中的图片进行批量处理。由于工作和学习所需,新接触Python,并且实现批量图片操作。
本文处理效果:

以及这样:

正文开始

步骤:实现一张背景图的读取、一个文件夹中尺寸一致或者不一致图像的读取、将读取图片批量替代至背景图的指定位置、将文件夹中的文件名(规范+不规范命名)作为文本写入到背景图的指定位置并以之命名为新的文件、并输出到指定文件夹。

使用的库:OpenCV、Os、PIL、matplotlib.
编程软件:Pycharm、Anaconda等

程序实现的思想:
1、先导入库,确保能够使用相关的功能:
OpenCV:是一个用于图像处理、分析、机器视觉方面的开源函数库。你可以用OpenCV来干什么,以及OpenCV中CV2的用法。
Os:在python编程时,经常和文件、目录打交道,这时就离不了os模块:Python中Os模块的使用。
PIL:该模块就是对图像进行操作的模块,如常见的打开(open)、存储(save)、显示(show)等:Python中PIL类的详细介绍。
Matplotlib:是 Python 2D 绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。Python中的Matplotlib模块使用。

如果需要对读取的图片统一尺寸,可用:

#例如:
img = img1.resize((102,102))
#将图片img1重新设定尺寸为102*102,赋值給img
#同理可以更改102为其他尺寸

2、导入库之后,则需要导入图像文件地址:
3、对图像分别进行操作
4、输出最新图像

#-------------------------------------------------------------------------
先说单张图贴图的实现,文本自定义
背景图:E:/Study of Lab/Test/marro.jpg

需要插入或者代替的图::/Study of Lab/Test/img1_jpg/6.jpg

合成图:

加上字体后:

程序为:

# -*- coding: utf-8 -*-
# by:学不好通信的通信孩子
# time:2021年2月1日
#Python实现将一张图片放到另一张图片指定的位置上并合成一张图
#将文字放入图中的指定位置
import matplotlib.pyplot as plt
from PIL import Image,ImageDraw,ImageFont
import cv2path = "E:/Study of Lab/Test/marro.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("E:/Study of Lab/Test/img1_jpg/6.jpg")#子图文件名
icon = icon.resize((1000,1000))
# 获取图片的宽高取被放图片
img_w, img_h = img.size#获的大小(母图)
print("img_w=", img_w)
print("img_h=", img_h)
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====替换部分图片==第一个参数用来覆盖的图片
# 第二个参数是要替代的位置
img.paste(icon, (w,h), mask=None)
# 保存图片
img.save("E:/Study of Lab/Test/new.jpg")#合成后的图片路径以及文件名
plt.imshow(icon)
plt.show()
plt.imshow(img)
plt.show()font = ImageFont.truetype("E:/Study of Lab/Test/cambriaz.ttf",300)
image = Image.open('E:/Study of Lab/Test/new.jpg')
img_draw = ImageDraw.Draw(image)
img_draw.text((1500,1500),'Be Yourself',fill='black',font=font)   # 放上文字信息到图像上
#image.show()
image.save("E:/Study of Lab/Test/hecheng.jpg")

#-------------------------------------------------------------------------
如果是批量操作:
(1)命名规范
背景图:E:\Study of Lab\Test\background.jpg

子图文件夹:

运行中显示的处理图像:

输出图为:

加了字体之后:

程序为:

# -*- coding: utf-8 -*-
# by:学不好通信的通信孩子
# time:2021年2月1日
该部分:实现循环读取文件夹中的图片,将图片粘贴到背景图具体位置
import matplotlib.pyplot as plt
import cv2
import os
from PIL import Image,ImageDraw,ImageFont
#os.path.join()函数:连接两个或更多的路径名组件
#链接:https://www.cnblogs.com/an-ning0920/p/10037790.html
#  1.如果各组件名首字母不包含’/’,则函数会自动加上
# 2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃
# 3.如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾#-------------------------------------------------------------------------------
# 源目录
project_dir = os.path.dirname(os.path.abspath(__file__))
#os.path.abspath(__file__) 作用: 获取当前脚本的完整路径
# 输入目录
input = os.path.join(project_dir, 'img1_jpg')
#path='C:/yyy/yyy_data/'
#print(os.path.join(path,'/abc'))
#C:/abc# 输出目录
output = os.path.join(project_dir, 'auto_image')
def img_read():#对子图进行操作# 切换目录#os.chdir() 方法用于改变当前工作目录到指定的路径#path -- 要切换到的新路径os.chdir(input)# 遍历目录下所有的文件for filename in os.listdir(os.getcwd()):print(filename)path = "E:/Study of Lab/Test/background.jpg"  # 母图详细文件名以及路径img_back = Image.open(path)img_w, img_h = img_back.size  # 获取被放图片的大小(母图)# 639 959print("img_w=", img_w)print("img_h=", img_h)im = Image.open(os.path.join(input, filename))#子图读取im = im.resize((1000,1000))im_w, im_h = im.sizeprint("im_w=", im_w)print("im_h=", im_h)#print("size1=", size1)if im_w > img_w:im_w = img_wif im_h > img_h:im_h = img_hw = int(51 * (img_w - im_w) / 90)h = int(12 * (img_h - im_h) / 150)print("w等于", w)print("h等于", h)#        cv2.imshow(filename, im)print(im.size[0])#352print(im.size[1])img_back.paste(im,(w,h),mask=None)plt.imshow(im)plt.show()plt.imshow(img_back)plt.show()img_back.save(os.path.join(output, filename))
if __name__ == '__main__':img_read()#该部分:实现循环读取文件夹中的图片,将文字写入指定位置
import cv2
import os
from PIL import Image,ImageDraw,ImageFont#读取嵌入图文件夹下的所有图
#写入字体
def read_image(img_addition):i = 0for filename in os.listdir(img_addition): #读取文件名print(filename)pict=cv2.imread(img_addition + "/" +filename) #读取到该地址下,带有文件名的图片font = cv2.FONT_HERSHEY_DUPLEX  # 设置字体# 图片对象、文本、左上角坐标、字体、字体大小、颜色、字体粗细imgzi = cv2.putText(pict, filename, (1300,1500), font,15, (255, 0, 0), 10 )cv2.waitKey(0)cv2.imwrite("E:/Study of Lab/Test/auto_image"+"/"+filename,pict)i=i+1print("该文件夹下的图片是",i,"个")read_image("E:/Study of Lab/Test/auto_image")

同理,子文件夹中命名不规范同样处理。【程序如上,修改子图文件夹即可】
(2)命名不规范
背景图:E:\Study of Lab\Test\background.jpg子图文件夹:
输出图:

参考文献:
https://www.9xkd.com/user/plan-view.html?id=1113747022

创作不易,转载请注明出处。

python:【一文学会】批量读取图片、替换背景图中的像素位置、批量添加文本相关推荐

  1. python批量读取图片并批量保存_Python实现批量读取图片并存入mongodb数据库的方法示例...

    本文实例讲述了Python实现批量读取图片并存入mongodb数据库的方法.分享给大家供大家参考,具体如下: 我的图片放在E:\image\中,然后使用python将图片读取然后,显示一张,存入取一张 ...

  2. python批量读取图片gps位置_某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置!...

    原标题:某少儿不宜网站图片拍摄位置分析,Python批量读取图片GPS位置! 1. python读取图片exif属性中的GPS信息 智能手机或平板如果在拍照时开启定位服务,照片中就会记录拍照位置信息和 ...

  3. opencv图像处理时使用stringstream批量读取图片,处理后并保存

    简介: 同文件输入输出流一样,使用stringstream可以批量读取图片,处理后并进行保存.因为C++中头文件 stringstream既可以从string读数据也可向string写数据,利于其这个 ...

  4. Python-OpenCV 从文件夹中批量读取图片

    实现从文件夹批量读取图片并将图片裁剪为(128x128大小) import os.path import glob import cv2 def convertjpg(jpgfile,outdir,w ...

  5. 【python批量插入图片到一个pdf中】

    批量插入图片到一个pdf中 需求 解决思路 代码详解 需求 把大量的img图片插入到一个pdf中,一张图片为pdf的一页 解决思路 先把大量的图片转为一个个的pdf,然后合并所有的pdf 话不多说,直 ...

  6. 【批量去除图片的背景】

    有一个需求,需要批量去除图片的背景,在网上搜到下面这个方法:[python]backgroundremover 去除背景_LiuPig刘皮哥的博客-CSDN博客GitHubhttps://github ...

  7. Python + opencv对拍照得到的图片进行背景去除的实现方法

    这篇文章主要介绍了Python + opencv对拍照得到的图片进行背景去除的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 有时候我们 ...

  8. 怎么修改html模板里的背景,如何替换背景图模板中的背景

    原标题:如何替换背景图模板中的背景 图文排版 H5秀 小伙伴 小米,你们最近做的"假装一个标题"那个模板里的图咋替换啊,想换成自己的图,怎么点都换不了呢? 其实,这个模板中的图是作 ...

  9. VBA读取html表格内容,科学网—VBA读取word文档表格中table的cell的text文本 - 付安民的博文...

    VBA读取word文档表格中table的cell的text文本 已有 11546 次阅读 2010-6-4 16:40 |个人分类:学习篇|系统分类:科研笔记 Sub Readtable() Dim ...

最新文章

  1. ACM第一名:基于轨迹感知多模态特征的视频关系检测
  2. Java引用类型有哪些
  3. hybris impex里的小括号语法
  4. conda报错Collecting package metadata
  5. UI布局引擎Layout 之 QGraphicsLinearLayout
  6. 学习笔记之什么是持久化和对象关系映射ORM技术
  7. 处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
  8. 使用预计算实时全局光照优化照明-项目介绍
  9. C语言男性标准体重,男性的标准体重是多少又如何计算?
  10. Java面试题!mysql安装教程图解
  11. 圣诞节要到了,如何制作自己的一个给头像戴帽子的小程序,请看这
  12. S-Nim (HDU 1536)组合博弈SG多组游戏
  13. mysql5.7修改密码
  14. 【bat】批处理教程之for的/f参数
  15. 深圳大澳湾度假团建攻略
  16. 计算机考研各科目分值分布,考研各个科目的分值
  17. 光功率显示c语言程序,c语言程序设计 - 三电实验教学中心.doc
  18. Python学习D-1
  19. 【Unity植物大战僵尸】向日葵动画、天空中阳光的生成与掉落(二)
  20. 【C++】 福到了(PTA)

热门文章

  1. Let your script window keep openning.
  2. 金球奖候选公示!第二批2022高工智能汽车「年度供应商」
  3. win7 共享文件服务器设置密码,win7如何共享文件夹设置密码,文件夹能直接设置密码win7-...
  4. CAD怎么标注尺寸?CAD半径标注技巧
  5. 当互联网的产品经理遇上物联网的产品经理,会是怎样的场景?
  6. mysql日期隐式转换_mysql中的隐式转换
  7. h5ai目录列表优化
  8. “AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型、SA-ConvLSTM模型
  9. 根据excel背景色进行筛选
  10. Git如何更新远程仓库代码到本地