如何批量将带有裁剪路径的图片转换为带白色背景的JPEG格式?
更详细地说,这些是TIFF格式的图片,里面有一个路径,也就是剪切路径,但出于某些原因,它们的背景还是保留着。
因为有几百张这样的图片,所以我不能一个一个地打开,选择路径 -> 制作选区 -> 反向选区 -> 用白色填充选区……
我尝试过做一个Photoshop的动作,这样就可以在批处理模式下使用,但没有成功,可能是这个“动作”模块太复杂了,或者我操作错了。
我还尝试为“ImageMagick”写一个脚本,经过一番努力,终于找到了正确的参数,能处理很多图片,但有趣的是,并不是所有的图片都能处理,尽管它们都是一样制作的,都是从Adobe Photoshop导出的剪切路径,保存为TIFF格式。
如果有人对ImageMagick很熟悉,我可以把这个脚本发上来,你们可以帮我看看我是不是哪里做错了。
希望有人能帮忙。请只提供免费的解决方案,比如ImageMagick,或者可以用Photoshop本身完成的!
我也在用Python或Shell脚本编写脚本,基于这些的任何方法也可以,但我找了找Python的库,什么也没找到 :/
1 个回答
0
剪切路径在Photoshop中并不会改变图像的表现方式:它只会影响你在InDesign、Illustrator等软件中放置图像时的效果。
不过,如果你还是想把剪切路径外面的部分填充成白色,可以使用下面这个脚本:
(function() {
var sourceFolder = Folder.selectDialog("choose folder");
fileList = sourceFolder.getFiles("*.tif");
for (i = 0; i < fileList.length;i++) {
open(fileList[i]);
var doc = activeDocument;
try {
var workPath = activeDocument.pathItems[0].name
} catch (e) {
alert(e);
return
}
loadSelection(workPath)
doc.selection.invert();
var white = new SolidColor;
white.gray.gray = 0;
doc.selection.fill(white)
doc.selection.deselect();
doc.close(SaveOptions.SAVECHANGES)
}
function loadSelection(name) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putProperty(c2t("Chnl"), c2t("fsel"));
desc.putReference(c2t("null"), ref);
var ref1 = new ActionReference();
ref1.putName(c2t("Path"), name);
desc.putReference(c2t("T "), ref1);
desc.putInteger(c2t("Vrsn"), 1);
desc.putBoolean(s2t("vectorMaskParams"), true);
executeAction(c2t("setd"), desc, DialogModes.NO);
}
function c2t(c) {
return charIDToTypeID(c)
}
function s2t(c) {
return stringIDToTypeID(c)
}
})()