yazii
(Yazii!)
1
一、限制条件
- 首先是Windows端软件
- 要轻量。虽然ps可以很完美地完成任务,但是ps太重了。如果打开大量图片,电脑也hold不住。
- 默认保存为副本到另一个目录,而不是覆盖保存(这个需求可以不满足,毕竟可以把待处理的图片全部提前复制一份)
二、使用场景
我现在有大量图片,需要从中挑选合适的图片,放大、裁切到制定尺寸。
由于每个图片需要保存的位置都不一样,所以不能使用程序设好参数批量处理,而是必须手动交互式调整。唯一确定的是输出的尺寸需要符合预设。
问困难在于,如果重复打开图片-调整尺寸-保存这样的动作,次数多了会非常烦。
如果真的一次性把全部图片都打开然后逐一处理,那电脑受不了。
所以期望有个能批量处理图片的软件,批量选择图片后,图片实际上只打开了一个。被打开的图片始终应用了预设的裁切尺寸,我只需要根据预览的效果,微调缩放和移动,然后点保存完事。
关键就在于:不需要重复打开和设置裁切区域的动作
Qingwa
(青小蛙)
2
你想要有个框框,一个一个来处理图片是吧。
铁打的框框,流水的图片。建议让AI写一个,我没见过这种 
3 Likes
dog
(荒废千年)
4
imagej/Fiji
通过宏可以实现,具体可以问AI
直接贴你的提问,问他用imagej怎么实现就行
kat
(kat)
5
用PS的批处理,并不是一次打开所有图片,而是依次打开
然后设置一个动作,每打开一张图片就创建一个裁剪,自动运行。这样PS会自动依次打开图片并裁剪,你只要拖动图片到需要的位置就行了。
1 Like
yazii
(Yazii!)
6
是这个意思 实际上发完帖子我就开始让ai写了,但是现在才调好缩略图预览和图片加载,裁切框还遥遥无期
顺着这个思路的话,还差一条自动保存到特定目录并命名,如果命名格式没要求的话截图类软件应该就可以,比如picpick
L11
(漢故征西將軍曺侯)
8
ui:一个用于预览裁剪效果的遮罩,大小可调,以及遮罩后的图片框,加上一些按钮。
后端调用命令行实现(或api),把遮罩参数以及图片参数传给外部工具,比如imagemagick。
这叫 do one thing and do it well.
用wpf大概很快能搞完
haitao
(HaitaoSoft)
9
对于具体图片,把它的左上角(a,b)到右下角(c,d)部分另存为长宽为e,f的图片文件?
不同图片,这6个参数有什么规律?有什么参数可以固定的??
yazii
(Yazii!)
10
具体而言是固定裁切结果的长宽,但是在裁切前需要根据预览效果做缩放,并且每次缩放的比例不一定
如上,从算法上讲,需要先缩放,后裁切,所以不能这么用。
我说的开销大的解法是建画布导入图层,画布大小就是最终结果,逐个图层调整,最后全部导出
这玩意门槛就高了,得是个有imagej使用基础的人才行
其实可以先固定长宽比,最后再按需求对所有图像进行缩放。
按楼主的需求,固定长宽比的话,其实就是:
(c - a)/(d - b) = k,其中 k 为定植。
不需要什么基础,ImageJ 是纯图形化操作,您让 AI 告诉您点菜单栏里的哪个命令、输入哪些参数就行。
yazii
(Yazii!)
13
找到了一个 toobox 软件,是用来批量裁切图片用于lora训练的,和我的情况比较接近,在和作者沟通中,预计可以满足需求
先后尝试了 GIMP、Krita、Paint.NET 最后找到一个,貌似符合需求(至少能快速地完成此工作,足够流水线作业)
最后总结的方案二,我觉得比较完美了(可惜限定条件:“可行的操作可能只有: 框是固定尺寸,图可以缩放平移”)
内容太占地方,已折叠
软件:XnView MP
https://www.xnview.com/
- 支持 Windows
- 轻量:便携版安装包大约 90 MB,是一个图片浏览+处理软件,非 PS 那种超级工具
- 需要提前复制一份
关键功能 Crop, Save & Next
- Crop, Save & Next
- Crop 尺寸有自定义预设(防止不小心拉到了,改变了大小,快速归位)
- Crop 框点了 Next 后是不动的
这很符合楼主的需求,
然后开始流水线操作
亲测效果(用时不到一分钟)
目前还有一个问题:怎么放大
目前的想法是,用类似 Snipaste 的贴图功能,在屏幕上粘一个参考框
然后对文件夹里的图片进行快速的 Resize
这个我暂时还没找到完美的方法
方案总结
方案一:(严格按照楼主说的先放大,框不变)
方案二:(个人觉得此方案是完美的,貌似只要放大就有损失产生了,和方案一等效,但是更精准)
- 使用固定比例的 Crop 框,半自动 Crop
- 一键批量放大到制定的尺寸
用固定的比例 Crop
一键缩放到统一大小
ps 抽象地描述需求不如直接给个 Demo 案例。
yazii
(Yazii!)
16
确实和裁头像有点接近,裁头像的策略是选择画面、固定比例,我还要根据缩放比例进行权衡,尽量让比例接近100%不发生缩放
yazii
(Yazii!)
17
如上一楼回复,如果不需要考虑缩放因素,这个软件确实是极佳选择.问题的关键就在于缩放-裁剪在一步内完成,才能完成策略均衡.
可行的操作可能只有: 框是固定尺寸,图可以缩放平移
用 Powerpoint 似乎能实现楼主的需求,具体操作略微麻烦,这里直接录个视频给大家看看效果:
2 Likes
amen
(阿闷)
19
十几年前我还真用过这种软件
一模一样的东西
可惜我早已经忘记名字了
1 Like
dog
(荒废千年)
20
指示AI调出来一个imagej/fiji 脚本,非常简单好用:
- 把脚本保存成 ijm后缀名的脚本文件
- 打开imagej,把脚本拖到imagej窗口
- 点击 run
然后就欧克了,你的所有需求都满足
会一次一个打开图片
打开的图片会有预设的选框,可以直接拖动选框,按住shift拖动四角可以原比例调整大小
调整好后点击ok,自动保存到文件夹下新建的"after"子文件夹里。
// 选择文件夹
dir = getDirectory("Choose a directory"); // 选择文件夹
list = getFileList(dir); // 获取文件夹中的文件列表
// 遍历文件夹中的每一张图片
for (i = 0; i < list.length; i++) {
// 只处理图像文件(根据文件扩展名过滤)
if (endsWith(list[i], ".jpg") || endsWith(list[i], ".png") || endsWith(list[i], ".tif") || endsWith(list[i], ".bmp")) {
open(dir + list[i]); // 打开图像
// 执行裁剪操作
makeRectangle(0, 0, 440, 440); // 初始位置和尺寸
waitForUser("wait for human"); // 等待用户交互(暂停)
run("Crop"); // 执行裁剪
// 获取当前图像的路径和文件名
currentPath = getDirectory("image"); // 获取当前图像的文件夹路径
fileName = getTitle(); // 获取当前图像的文件名
// 查找扩展名
dotIndex = fileName.lastIndexOf('.');
if (dotIndex > 0) { // 确保不是以点开头或没有扩展名
extension = fileName.substring(dotIndex + 1);
}
// 创建新的文件夹路径
newDirectory = currentPath + "after/"; // 将 "after" 添加到原文件夹路径
newFilePath = newDirectory + fileName; // 将文件名与新路径结合
// 检查 "after" 文件夹是否存在,如果不存在则创建
if (!File.exists(newDirectory)) {
File.makeDirectory(newDirectory);
}
// 根据文件扩展名确定保存格式
saveAs(extension, newFilePath); // 保存文件
close(); // 关闭当前图像
}
}