作品展示
背景需求:
2024年2月底,区级信息化任务——公共区域电子显示屏排查管理系统的工作,其中一项是:为每个公共区域的电子屏制作二维码,便于系统全面监管,了解屏幕使用播放频率,内容等
要求是打印图片的宽度大于4CM
我用Photoshop查看了下载二维码图片的长宽尺寸
那么35CM宽的二维码图片需要打印多大尺寸?
继续讨论二维码打印后的尺寸大小
确定需求——二维码的图片宽度从35厘米缩减到4.5厘米,高度根据宽度等比例缩放
代码制作:
感谢万能的chatgpt(AI对话大师)根据我的需求,写出等比例缩小图片的代码,让我3分钟内搞定了三个文件夹内的二维码图片缩小。
第一次代码(错误不能用)
import os
from PIL import Image
# 一级文件夹路径
folder_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\赋码'
# 获取一级文件夹下的所有二级文件夹
subfolders = [f.path for f in os.scandir(folder_path) if f.is_dir()]
# 遍历二级文件夹
for subfolder in subfolders:
# 获取二级文件夹中的所有jpg图片
image_files = [f.path for f in os.scandir(subfolder) if f.is_file() and f.name.lower().endswith('.jpg')]
# 遍历图片文件
for image_file in image_files:
# 打开图片
img = Image.open(image_file)
# 获取原始尺寸(像素)
original_width, original_height = img.size
print(original_width, original_height)
# 1000 1347
# 计算等比例缩放后的尺寸
new_width = 4.5 # 新宽度为4.5CM
scale_factor = new_width / original_width
new_height = int(scale_factor * original_height)
# 等比例缩放图片
resized_img = img.resize((int(new_width), new_height))
# 覆盖原图
resized_img.save(image_file)
第一次运行后
研究后,我发现,图片原始尺寸是像素,1000和1347,而不是35*47CM,因此4,5在这里不是厘米,而是像素,因此缩小后几乎看不见
于是我又追问了AI对话大师
这一次生成的代码,提供了分辨率,和像素厘米转换的代码,实现了我的需求
'''
显示屏一屏一码(图片缩小打印)
作者:AI对话大师、阿夏
时间:20240304
'''
import os
from PIL import Image
# 一级文件夹路径
folder_path =r'C:\Users\jg2yXRZ\OneDrive\桌面\赋码'
# 获取一级文件夹下的所有二级文件夹
subfolders = [f.path for f in os.scandir(folder_path) if f.is_dir()]
# dpi值(根据实际情况修改)
dpi = 72
# 遍历二级文件夹
for subfolder in subfolders:
# 获取二级文件夹中的所有jpg图片
image_files = [f.path for f in os.scandir(subfolder) if f.is_file() and f.name.lower().endswith('.jpg')]
# 遍历图片文件
for image_file in image_files:
# 打开图片
img = Image.open(image_file)
# 获取原始尺寸
original_width, original_height = img.size
# 计算等比例缩放后的尺寸
new_width_cm = 4.5 # 新宽度为4.5厘米
new_width_px = int(new_width_cm * dpi / 2.54) # 厘米转换为像素
scale_factor = new_width_px / original_width
new_height_px = int(scale_factor * original_height)
# 等比例缩放图片
resized_img = img.resize((new_width_px, new_height_px))
# 覆盖原图
resized_img.save(image_file)
运行后不到3秒就完成了三个文件夹的转换
验证尺寸——等比例缩放
4.5CM小图,放到PS里面查看大小——4.48*6.03CM
因为有了这套简单的宽度转换代码,所以我又做了两款尺寸,4厘米和5厘米备用,如果明天测量大屏幕边缘后,感觉图片太小或太大,可以有这两份替代。
'''
显示屏一屏一码(图片缩小打印)
作者:AI对话大师、阿夏
时间:20240304
'''
import os
from PIL import Image
n=float(input('宽度大小4.5\n'))
# 一级文件夹路径
folder_path =r'C:\Users\jg2yXRZ\OneDrive\桌面\赋码{}CM'.format(n)
# 获取一级文件夹下的所有二级文件夹
subfolders = [f.path for f in os.scandir(folder_path) if f.is_dir()]
# dpi值(根据实际情况修改)
dpi = 72
# 遍历二级文件夹
for subfolder in subfolders:
# 获取二级文件夹中的所有jpg图片
image_files = [f.path for f in os.scandir(subfolder) if f.is_file() and f.name.lower().endswith('.jpg')]
# 遍历图片文件
for image_file in image_files:
# 打开图片
img = Image.open(image_file)
# 获取原始尺寸
original_width, original_height = img.size
# 计算等比例缩放后的尺寸
new_width_cm = n # 新宽度为4.5厘米
new_width_px = int(new_width_cm * dpi / 2.54) # 厘米转换为像素
scale_factor = new_width_px / original_width
new_height_px = int(scale_factor * original_height)
# 等比例缩放图片
resized_img = img.resize((new_width_px, new_height_px))
# 覆盖原图
resized_img.save(image_file)
结语:
chatGPT写Python代码,快捷迅速,可不断优化代码,直到满足自身需求。
有了它,制作代码的速度快了,效率高了,(* ̄︶ ̄)
但自身也更加不会专研Python代码的写法了,能力退化!o(╥﹏╥)o,
参考代码