本脚本可用于对指定文件夹中的所有图片进行批量裁剪和缩放,并按照指定的尺寸和比例保存为新的图片。
问题描述
该脚本主要解决了以下问题:
- 对文件夹内的所有图片进行居中裁剪,以达到指定的高宽比。
- 将裁剪后的图片缩放到指定的大小。
- 支持不同的保存模式,可以选择将处理后的图片保存到新文件夹中(保留或不保留子目录结构),或直接在原文件夹中生成。
使用方法
- 确保您已经安装了Python和Pillow库。如果尚未安装,可以使用以下命令安装:
pip install pillow
- 将脚本保存为image_resizer.py(或其他您喜欢的文件名)。
- 通过命令行(或终端)运行脚本:
python image_resizer.py
- 程序会提示您输入图片文件夹位置,请输入待处理的图片文件夹位置并按回车键,例如:
请输入图片文件夹位置(输入Q或q退出): sample_images/
- 如果您想要退出程序,请在提示输入图片文件夹位置的界面输入“Q”或“q”并按回车键。
- 程序会根据您输入的图片文件夹位置进行批量处理,并将处理后的图片保存到指定的目录中。
参数设置
以下参数可以根据需要进行修改:
dst_w
和dst_h
:目标尺寸,分别表示图片的目标宽度和高度。默认值分别为580和300。-
save_type
:保存模式。有以下几种选项:- 1:将处理后的图片存储到新文件夹中,并保留子目录结构。
- 2:将处理后的图片存储到一个新的文件夹,但不复制子文件夹,而是全部放到一起。
- 3:直接在原文件夹中生成处理后的图片。
默认值为1。
函数说明
is_img(ext)
: 判断给定的文件扩展名是否为图片格式。remove_ds_store(path)
: 删除指定路径下的.DS_Store
文件(仅适用于macOS)。resize_dir_images(src_path)
: 遍历指定文件夹内的所有图片,并调用crop_and_resize
函数进行处理。crop_and_resize(fp)
: 对给定的图片进行裁剪和缩放。get_src_path()
: 获取用户输入的文件夹路径。main()
: 主函数,负责获取源文件夹路径,创建目标文件夹,调用resize_dir_images
函数进行图片处理,最后输出处理结果。
不同参数和模式下的效果
保存模式 1
默认参数(dst_w=580,dst_h=300,save_type=1)
- 输入文件夹结构:
- 运行脚本后,输出文件夹结构
- 裁剪结果:将原图按照目标比例居中剪裁,以宽度为580,高度为300进行缩放。原图比例大于目标比例时,裁剪掉原图上下部分;原图比例小于目标比例时,裁剪掉原图左右部分。
保存模式 2
自定义参数(dst_w
=1000,dst_h
=600,save_type
=2)
将所有处理后的图片放入一个新的文件夹中。
- 输入文件夹结构:
- 运行脚本后,输出文件夹结构:
- 裁剪结果:将原图按照目标比例居中剪裁,以宽度为1000,高度为600进行缩放。所有图片均存储到一个新的文件夹中,保留原始文件名。
保存模式 3
将处理后的图片保存在原文件夹中。自定义参数(dst_w
=400,dst_h
=400,save_type
=3)
- 输入文件夹结构:
- 输出文件夹结构:
- 裁剪结果:将原图按照目标比例居中剪裁,以宽度为400,高度为400进行缩放。所有图片均存储到一个原来的文件夹中,新文件后缀会加上新的像素值。
输入文件夹结构
脚本默认会处理指定文件夹下所有的子文件夹中的图片,处理后将会按照指定的存储模式进行保存。如果您的文件夹中包含了多个子文件夹,并且希望仅处理其中的某个子文件夹,可以将子文件夹的名称添加到路径中。例如,如果要仅处理名为 my_photos 的子文件夹中的图片,可以将命令修改为:
注意事项
在使用脚本进行图片处理时,有一些需要注意的事项:
- 脚本只能处理常见的图片格式,包括 .jpg、.jpeg、.png、.bmp等格式。其他格式的文件会被忽略。
- 处理图片时会将图片进行裁剪和缩放,如果图片的比例和目标比例差别很大,可能会导致图片变形或者出现黑边。因此,建议将目标比例设置为和原始图片比例相近的值。
- 在脚本处理图片时,会按照默认的宽度和高度进行缩放。如果您需要将图片缩放到其他的尺寸,可以修改
dst_w
和dst_h
参数。 - 在脚本处理图片时,会按照指定的存储模式保存处理后的图片。如果您需要将处理后的图片保存到其他的文件夹中,可以修改 save_type 参数。
- 在脚本处理图片时,会先检查是否存在 .DS_Store 文件,并自动删除。这是因为在 Mac OS 系统中,该文件会记录文件夹中的图标布局等信息,可能会对处理图片产生影响。
总结
通过本脚本,您可以方便地对图片进行批量裁剪和缩放,实现快速处理大量图片的目的。根据实际需求,您可以调整参数来满足不同的图片处理要求。同时,我们还提供了多种保存模式,可以根据实际需求选择适合的模式。希望这个脚本能够帮助您更高效地进行图片处理。
附录代码
总结
chatGPT牛逼,如果要他生成markdown源文件的,则对应的AI引导词为: