入学前学校有个作业,想想可以搞点啥呢
于是就想着可以用PIL模块,把学校的风景和某些元素叠加起来
于是在网上搜寻了一些资料,看到的都是烂七八糟的,以及从其他地方COPY下来的
于是自己就找到了PIL模块的手册搞起来
11.jpg图1
22.jpg图2
这个程序的功能是实现两张图片重叠起来
from PIL import Image
import math
img1 = Image.open('1.jpg')#图片1
img2 = Image.open('2.jpg')#图片2
#该函数的作用是由于 Image.blend()函数只能对像素大小一样的图片进行重叠,故需要对图片进行剪切。
def cut_img(img, x, y):
"""
函数功能:进行图片裁剪(从中心点出发)
:param img: 要裁剪的图片
:param x: 需要裁剪的宽度
:param y: 需要裁剪的高
:return: 返回裁剪后的图片
"""
x_center = img.size[0] / 2
y_center = img.size[1] / 2
new_x1 = x_center - x//2
new_y1 = y_center - y//2
new_x2 = x_center + x//2
new_y2 = y_center + y//2
new_img = img.crop((new_x1, new_y1, new_x2, new_y2))
return new_img
#print(img1.size, img2.size)
#取两张图片中最小的图片的像素
new_x = min(img1.size, img2.size)[0]
new_y = min(img1.size, img2.size)[1]
new_img1 = cut_img(img1, new_x, new_y)
new_img2 = cut_img(img2, new_x, new_y)
#print(new_img1.size, new_img2.size)
#进行图片重叠 最后一个参数是图片的权值
final_img2 = Image.blend(new_img1, new_img2, (math.sqrt(5)-1)/2)
#别问我为什么是 (math.sqrt(5)-1)/2 这个是黄金比例,哈哈!!
final_img2.show()
33.jpg最终结果
网友评论