如何批量将带有裁剪路径的图片转换为带白色背景的JPEG格式?

0 投票
1 回答
855 浏览
提问于 2025-04-18 13:51

更详细地说,这些是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)
    }

})()

撰写回答