拷贝一张小图片到另一张大图片
现在我有一张小图片像素大小为(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")