Быстрая зачистка скриптом

  • Автор темы Автор темы wright
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
W

wright

Гость
Топикстартер
Ясень-пень существует множество фильтров для быстрой чистки фоток, однако на практике оказывается все не так шоколадно как описывается. Я имею ввиду практику массового производства за кратчайшее время. У меня были в ходу всякие фильтры и плагины, в конце концов ничего не прижилось и я пользовался простым Surface Blur (10-20) в режиме ослабления с последующим повышением резкотухи по обстоятельствам.

Радиус 10 пикселов означает что фактура практически будет уничтожена. Но уловка в ослаблении. Отменяется действие фильтра и применяется с этим самым ослаблением в процентах по характеру изображения.

Постоянно этим заниматься было утомительно и я написал простейший скрипт. Который и выкладываю. Скрипт выкатывает диалог в котором вы можете задать величину ослабления в процентах. По умолчанию там 50. Если фотка получше качеством - можно поставить 30. Если совсем пропащая и растянутая - 70. Обычно хорошо идет 50.

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

Скрипт можно применять к слоям со слоевой маской. Он отцепляет ее временно чтобы применить ослабление, затем вновь прицепляет.

Применяется к "убитым" фоткам. То есть таким, которые безбожно растянуты, или имеют сильные артефакты сжатия. Работает настолько быстро, насколько данный простой фильтр будет работать в вашей системе. А4 обрабатывается примерно за 5 секунд.

PHP:
if (documents.length != 0) {

    linkUnlinkLayerMask(false); // unlink mask
    
    var fadeValue = prompt("Input Fade value.", "50", "Fade Surface Blur");
    
    if ((fadeValue != null) && (fadeValue != "")) {

        try {

            // =======================================================
            var id3 = sTID( "surfaceBlur" );
                var desc2 = new ActionDescriptor();
                var id4 = cTID( "Rds " );
                var id5 = cTID( "#Pxl" );
                desc2.putUnitDouble( id4, id5, 10.000000 );
                var id6 = cTID( "Thsh" );
                desc2.putInteger( id6, 20 );
            executeAction( id3, desc2, DialogModes.NO );
            
            // Undo apply
            executeAction(cTID('undo'), undefined, DialogModes.NO);

            // =======================================================
            var id7 = cTID( "Fade" );
                var desc3 = new ActionDescriptor();
                var id8 = cTID( "Opct" );
                var id9 = cTID( "#Prc" );
                desc3.putUnitDouble( id8, id9, fadeValue );
                var id10 = cTID( "Md  " );
                var id11 = cTID( "BlnM" ); 
                var id12 = cTID( "Nrml" ); // there you can change blend mode; try ScrpitListemer for keys
                desc3.putEnumerated( id10, id11, id12 );
            executeAction( id7, desc3, DialogModes.NO );

            linkUnlinkLayerMask(true); // link back
            
        } catch (e) {
            alert(e);
        }
    }
}

function hasLayerMask() {
    var ref = new ActionReference();
    ref.putEnumerated(cTID("Lyr "), cTID("Ordn"), cTID("Trgt"));
    var desc = executeActionGet(ref);
    return desc.hasKey(cTID("UsrM"));
}

function linkUnlinkLayerMask(u){

    if(hasLayerMask()){
        var desc = new ActionDescriptor();
        var desc2 = new ActionDescriptor();
        var ref = new ActionReference();
        ref.putEnumerated( cTID( "Lyr " ), cTID( "Ordn" ), cTID( "Trgt" ) );
        desc.putReference( cTID( "null" ), ref );
        desc2.putBoolean( cTID( "Usrs" ), u );
        desc.putObject( cTID( "T   " ), cTID( "Lyr " ), desc2 );
        executeAction( cTID( "setd" ), desc, DialogModes.NO );
    }
}

function cTID(s) {return app.charIDToTypeID(s);}
function sTID(s) {return app.stringIDToTypeID(s);}
 
Ответ: Быстрая зачистка скриптом

Да, сейчас заметил что анлинк стоит до проверки чего юзер ввел - это можно переместить под проверку.

И, в общем-то еще там можно варьировать режимы наложения при ослаблении, но, т.к. это уже художественная часть, то можете сами модифицировать. Например как известно можно задать Overlay чтобы получить пережаренную по цветам фотку без традиционного дублирования слоев.
 
Статус
Закрыто для дальнейших ответов.