PIL 库的运用: 拷贝一张图片到另一张图片 + 图片上添加文字

拷贝一张小图片到另一张大图片

现在我有一张小图片像素大小为(1000,562),一张大图片像素大小为(1920,1080)

from PIL import Image
big_img = Image.open("big_picture.jpg")
small_img = Image.open("samll_picture.jpg")
big_img.paste(small_img, (0, 0))#从犯(0,0)处开始拷贝小图片到大图片
big_img.show()
big_img.save("new.jpg")

运行结果
在这里插入图片描述

拷贝一张图片到新建的空白图片

from PIL import Image
small_img = Image.open("samll_picture.jpg")
new_img= Image.new('RGB', (small_img.size[0], small_img.size[1]*2), 'white')#新建一张2倍高度的 白色底片的 图片
new_img.paste(small_img, (0, 0))#从犯(0,0)处开始拷贝小图片到大图片
new_img.show()
new_img.save("new.jpg")

运行结果:
在这里插入图片描述

在图片上写字

我在上面的测试代码基础上,添加了写入文字的代码

from PIL import Image, ImageDraw, ImageFont
small_img = Image.open("samll_picture.jpg")
start_x = small_img.size[0]  #
start_y = small_img.size[1] #
print(start_x , start_y)
new_img= Image.new('RGB', (start_x, start_y*2), 'white')#新建一张2倍高度的 白色底片的 图片
new_img.paste(small_img, (0, 0))#从坐标(0,0)处开始拷贝小图片到大图片

font_size = 32
setFont = ImageFont.truetype('C:/windows/fonts/Dengl.ttf', font_size) #设置字体以及字体大小
fillColor = "blue"  # 设置字体颜色
draw = ImageDraw.Draw(new_img) # 得到画笔
poem = ["静夜思","窗前明月光","疑是地上霜","举头望明月","低头思故乡"]#创建一首诗,等待写入
for i in range(len(poem)):
    draw.text((0,start_y + 32*i), poem[i], font=setFont, fill = fillColor) #利用ImageDraw的内置函数,在图片上写入文字

new_img.show()
new_img.save("new.jpg")


在这里插入图片描述

居中对齐写入

from PIL import Image, ImageDraw, ImageFont
small_img = Image.open("samll_picture.jpg")
W = small_img.size[0]  #
H = small_img.size[1] #
print(W, H)
new_img= Image.new('RGB', (W, H*2), 'white')#新建一张2倍高度的 白色底片的 图片
new_img.paste(small_img, (0, 0))#从犯(0,0)处开始拷贝小图片到大图片

font_size = 32
setFont = ImageFont.truetype('C:/windows/fonts/Dengl.ttf', font_size) #设置字体以及字体大小
fillColor = "blue"  # 设置字体颜色
draw = ImageDraw.Draw(new_img) # 得到画笔

poem = '''
   静夜思
窗前明月光.
疑是地上霜.
举头望明月.
低头思故乡.
'''

msg_list = poem.split('\n')  # 分割字符串成列表
max_para = len(max(msg_list))  # 选取列表中最长的那一行字符串为行写入坐标的基础
spaceNum = 8
h = (font_size + spaceNum) * len(msg_list)
w = max_para * font_size
for i in range(len(msg_list)):  # 这样的话,每次写入,行坐标就不动了,只动列坐标
    draw.text(((W-w)/2, H + 64 + i*(font_size + spaceNum)), msg_list[i], font=setFont,fill = fillColor)
new_img.show()
new_img.save("hello.png", "PNG")


在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚂蚁小兵

慢慢长夜磨一章好文章,费烟!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值