0

我有大量图像,起初有黑色背景,然后去除了纯黑色,使图像带有像素化的暗边。

我正在寻找一种批处理这些图像的方法,以对与透明像素相邻的黑色像素进行颜色擦除,或者使边缘平滑,使黑色边缘不呈锯齿状。

我有 xnview、irfanview 和 GIMP,但我找不到合适的方法来执行此操作,除了手动使用 GIMP 通过在透明区域上使用魔杖、增长一个像素并擦除黑色颜色。

有任何想法吗?我说的是超过 800 张图像,所以批处理非常重要。它们是从 3d 模型自动生成的。

在此期间,我会继续四处寻找!

4

1 回答 1

2

Photoshop 是可编写脚本的,AFAIK gimp 也是如此。Photoshop 有 vbscript、javascript 和 apple(script?) 的脚本参考以及以 PDF 格式隐藏在已安装文件夹中的示例。检查文档。

我抄袭了一种从论坛帖子中选择透明度的技术,并将其移植到 vbscript。它创建一个临时动作,然后在(通过的)当前应用程序引用中选择当前图层的透明度。参考资料中介绍了打开文件、保存文件等的基础知识。

下面的 vbscript 示例将找到 photoshop,将其带到前面,然后尝试在当前打开的文档中加载透明度。Obvious Man 说,如果您还没有打开 PS 并加载文档,或者您的文档没有应用透明度,这将失败。YMMV。

Set appRef = CreateObject("Photoshop.Application")
appRef.BringToFront
loadTransparency appRef

    function loadTransparency(appRef)
        dim desc
        dim ref
        dim ref1

        set desc = CreateObject( "Photoshop.ActionDescriptor" )
        set ref = CreateObject( "Photoshop.ActionReference" )
        ref.putProperty appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "fsel" ) 
        desc.putReference appRef.charIDToTypeID( "null" ), ref 

        set ref1 = CreateObject( "Photoshop.ActionReference" )
        ref1.putEnumerated appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "Chnl" ), appRef.charIDToTypeID( "Trsp" )
        desc.putReference appRef.charIDToTypeID( "T   " ), ref1 

        appRef.ExecuteAction appRef.charIDToTypeID( "setd" ), desc, 3   '3 = no dialogs

    end function
于 2011-03-29T18:58:26.717 回答