Пакетный процесс сглаживания прозрачного GIF для PNG - PullRequest
0 голосов
/ 29 марта 2011

У меня есть большое количество изображений, которые сначала имели черный фон, затем был удален сплошной черный цвет, оставив изображение с точечными темными краями.

Я ищу способ пакетной обработки этих изображений, чтобы либо стереть цвета черных пикселей, смежных с прозрачными пикселями, либо сгладить края, оставив черные края не такими зубчатыми.

У меня были xnview, irfanview и GIMP, но я не могу найти подходящий способ сделать это, кроме как вручную с помощью GIMP, используя волшебную палочку в прозрачной области, растущую на один пиксель и стирающую цвет черным цветом.

Есть идеи? Я говорю о 800 изображениях, поэтому пакетная обработка очень важна. Они автоматически генерируются из 3d моделей.

В то же время я буду продолжать осматриваться!

1 Ответ

2 голосов
/ 29 марта 2011

Photoshop поддерживает скрипты, а AFAIK gimp тоже.В Photoshop есть ссылки на скрипты для vbscript, javascript и apple (script?), А также образцы, похороненные в установленных папках в формате PDF.Проверьте документы.

Я выбрал метод выбора прозрачности в сообщении на форуме и перенес его в vbscript.Он создает временное действие, которое затем выбирает прозрачность текущего слоя в (переданной) текущей ссылке на приложение.Основы открытия файлов, сохранения файлов и т. Д. Описаны в ссылках.

В приведенном ниже примере vbscript вы найдете фотошоп, перенесите его на передний план и попытайтесь загрузить прозрачность в текущий открытый документ.Очевидный Человек говорит, что это не удастся, если вы еще не открыли 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
...