作品展示:
把一张正方形图片的四个等大小图切割成四张图片
背景需求
最近在学习ChatGPT的绘画(midjounery AI艺术)
我想给中班孩子找卡通动物图片(黑白边框),打印下来,孩子们练习描边、涂色、延边剪等项目。
“小鸡 简笔画 卡通 黑白外轮廓 没有涂色Little Cat Sketching Cartoon Black and White Outline Not Painted”
通常midjounery会生成四张图片供选择,我全都要,就直接将四张图片另存下载,(用U放大功能比较费时间)
直接需求:用Python把图片切割成四小张图片。
操作过程:
1、查看图片大小(像素)
右击图片,有一个“(图片)编辑”
可以看到这套图片的大小:2048像素*2048像素
(midjounery 默认长款是1:1。所以四张合图基本都是2048*2048)
2、把所有图片放在一个文件夹里
代码展示
# 参考网址:https://blog.csdn.net/weixin_42182534/article/details/125773141?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E6%88%AA%E5%8F%96%E5%9B%BE%E7%89%87%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-125773141.nonecase&spm=1018.2226.3001.4187
'''
功能:把midjounery 生成的四张图片(动物简笔画卡通图案)切割成小图(png)
作者:阿夏
时间:2023年6月23日 19:51
'''
from PIL import Image
import os
import os.path
long=int(input('图片长度像素(2048,2912)\n'))
wide=int(input('图片宽度像素(2048,1632)\n'))
# 1:1图比例是2048
# 16:9图片比例 2912:1632
# 定义文件所在文件夹
image_dir = r'C:\Users\jg2yXRZ\OneDrive\桌面\四张图片拆分'
for parent, dir_name, file_names in os.walk(image_dir): # 遍历每一张图片
for filename in file_names:
print(filename)
pic_name = os.path.join(parent, filename)
image = Image.open(pic_name)
_width, _height = image.size
print(_width, _height)
# 四张图片的坐标
t1=[0,0,float(long/2),float(wide/2)]
t2=[float(long/2),0,long,float(wide/2)]
t3=[0,float(wide/2),float(long/2),wide]
t4=[float(long/2),float(wide/2),long,wide]
pic=t1+t2+t3+t4
print(pic)
# [0, 0, 1456.0, 816.0, 1456.0, 0, 2912, 816.0, 0, 816.0, 1456.0, 1632, 1456.0, 816.0, 2912, 1632]
for p in range(int(len(pic)/4)):
pp=pic[p*4:p*4+4]
print(pp)
# 定义裁剪范围(left, upper, right, lower)
# # box = image.crop((0,0,123,123))
box = image.crop((pp[0],pp[1],pp[2],pp[3]))
name = filename[:-4]+'_'+str(p) +'.png'
box.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\四张图片拆分\%s' % name)
print('Done!')
终端运行:
结果展示:
单张图片大小:1024*2014 ,普通A4打印足够了
感悟:
1、用AI绘画生成一样大小的图案(如简笔画),更容易实现Python学具批量插入(不会出现图片压缩、图案主体变形的情况)
2、运用代码切割四张图片,快速便利获得同样大小的图片,就不需要midjounery的U放大功能(生成单一图片费时,主要是我不需要超清图片)