[PS CC-CC2021] Автоматизировать выделение по направляющим

Павел I

Участник
Топикстартер
Сообщения
142
Реакции
1
Добрый день, господа! Может быть кто-нибудь подкинет идею для автоматизации выделения по типу как на картинке. Когда есть вертикальная разметка и каждую часть я хочу сохранить как выделение (Save selection). Экшен или скрипт или может уже что-то подобное есть. Спасибо!
 

Вложения

  • На форум.png
    На форум.png
    7.8 КБ · Просм.: 175

Oleg_Sh

15 лет на форуме
Сообщения
179
Реакции
50
У инструмента Slice, на верхней панели есть кнопка "Slices from guides". После нажатия, изображение "порежется" на несколько слайсов. Потом Ctrl+Alt+Shift+S и в параметрах, там где уже имя файла вводить, внизу есть опция Slices, выставьте "All slices" и ваш файл нарежется на отдельные файлы. Но там кажется нельзя сохранять в tif. Весь процесс можно записать в экшен и будет щасте.
 
  • Спасибо
Реакции: Aikir1793 и Павел I

Павел I

Участник
Топикстартер
Сообщения
142
Реакции
1
Спасибо! Работает, но в tiff не сохраняет это плохо
 

Павел I

Участник
Топикстартер
Сообщения
142
Реакции
1
Нашел скрипт. Но он выделяет только область между двумя направляющими и потом их удаляет

 

Oleg_Sh

15 лет на форуме
Сообщения
179
Реакции
50
тут предлагают скрипт, который делает layers из слайсов. Если он работает, то можно будет layers сохранять в отдельные файлы, там уже есть возможность сохранять в tiff
 
  • Спасибо
Реакции: Павел I

Павел I

Участник
Топикстартер
Сообщения
142
Реакции
1
Кажется там немного не так. Парень просил чтобы он мог картинку поделить на квадратики 10х10 px например, и чтобы каждый в отдельном слое был. О слайсах там речи нет, кроме названия темы, как ни странно
 
Последнее редактирование:

Oleg_Sh

15 лет на форуме
Сообщения
179
Реакции
50
Кажется там немного не так. Парень просил чтобы он мог картинку поделить на квадратики 10х10 px например, и чтобы каждый в отдельном слое был. О слайсах там речи нет
да, посмотрел на заголовок, а они пошли другим путем
 

Павел I

Участник
Топикстартер
Сообщения
142
Реакции
1
Не знаю, мне под печать всё это дело, интерьерная. Чёткого понимания какая разница у меня нет, всё, что я пытался по этому поводу узнать ясность не улучшило
 

Gadalka

R.I.P.
Сообщения
2 530
Реакции
868
под печать всё это дело, интерьерная
Интересно, а нахлёста соседних изображений при этом разве не надо?
Давайте начнём с техтребований тех, кто будет печатать и что именно должно получиться на выходе.
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 891
Реакции
3 458
Если речь о чём-то типа нарезки билборда на лоскуты блюбека, то это успешно делается на рипе. Для тех, у кого нет такой функции, написана куча различных приблуд. Одну из оных, помнится велосипед и я.
 

Павел I

Участник
Топикстартер
Сообщения
142
Реакции
1
Оклеиваем витрины из стекла, нахлёстов не надо. PNG я так понял в СМУК не сохраняет судя по моим экспериментам, а значит и смысла в нём нет
 

Gad

Сообщения
2 975
Реакции
1 408

Павел I

Участник
Топикстартер
Сообщения
142
Реакции
1
Спасибо от души! 'dans))'У меня уже есть экшен, который вытаскивает сохранённые выделения, которые я раньше руками сохранял.Теперь будет на автомате '8)' Единственное этот скрипт именует немного не так как хотелось бы (1,2,3 итд) я могу сам это поправить? Попытался открыть в блокноте,не получилось
 

Gad

Сообщения
2 975
Реакции
1 408
А блин :) Хотел посмотреть что за зверь jsxbin, а потом промахнулся и упаковал не то:)
Вот код:
JavaScript:
#target photoshop
if(documents.length > 0) {
    var doc = activeDocument;
    main();
}; 


function main() {
    var startRulerUnits = preferences.rulerUnits;
    preferences.rulerUnits = Units.PIXELS;
    var g = doc.guides;
    var gX = new Array();
    var n = 1;
    gX[0] = 0;
    var h = doc.height
        for( var i = 0; i < g.length; i++ ) {
            if (g[i].direction == Direction.VERTICAL && g[i].coordinate.value !== 0 && g[i].coordinate.value !== doc.width.value) {
                gX[n] = g[i].coordinate.value;
                n++;
            };
        };
    if (n > 0) {
        gX[n] = doc.width.value;
            gX.sort(function (a, b) {
            return a - b;
            });
        var ChV = new Array();
        for( var i = 0; i < doc.channels.length; i++ ) {
            ChV[i] = doc.channels[i].visible;
        };
        for( var a = 0; a < gX.length-1; a++ ) {
            doc.selection.select([[gX[a],0],[gX[a+1],0],[gX[a+1],h],[gX[a],h]], SelectionType.REPLACE, 0, false); 
            nameChanel = "Slicing select " + a;
        try {
        doc.channels.getByName (nameChanel);
    }     catch (error) {
        doc.channels.add().name = nameChanel;
        };
            chRef = doc.channels.getByName (nameChanel);
            doc.selection.store(chRef, SelectionType.REPLACE);
        };
    };
    for( var i = 0; i < doc.channels.length; i++ ) {
        if (ChV[i]) {
        doc.channels[i].visible = true;
        }     else {
            doc.channels[i].visible = false;
            };
    };
    doc.selection.deselect();
    app.preferences.rulerUnits = startRulerUnits;
};
 
Последнее редактирование:
  • Спасибо
Реакции: Павел I

Gad

Сообщения
2 975
Реакции
1 408
Исправил одну ошибку и заодно нумерацию как Вы хотели :)
Код:
#target photoshop
if(documents.length > 0) {
    var doc = activeDocument;
    main();
};  


function main() {
    var startRulerUnits = preferences.rulerUnits;
    preferences.rulerUnits = Units.PIXELS;
    var g = doc.guides;
    var gX = new Array();
    var n = 1;
    gX[0] = 0;
    var h = doc.height
        for( var i = 0; i < g.length; i++ ) {
            if (g[i].direction == Direction.VERTICAL && g[i].coordinate.value !== 0 && g[i].coordinate.value !== doc.width.value) {
                gX[n] = g[i].coordinate.value;
                n++;
            };
        };
    if (n > 0) {
        gX[n] = doc.width.value;
            gX.sort(function (a, b) {
            return a - b;
            });
        var ChV = new Array();
        for( var i = 0; i < doc.channels.length; i++ ) {
            ChV[i] = doc.channels[i].visible;
        };
        for( var a = 0; a < gX.length-1; a++ ) {
            doc.selection.select([[gX[a],0],[gX[a+1],0],[gX[a+1],h],[gX[a],h]], SelectionType.REPLACE, 0, false);  
            nameChanel = a + 1;
        try {
        doc.channels.getByName (nameChanel);
    }     catch (error) {
        doc.channels.add().name = nameChanel;
        };
            chRef = doc.channels.getByName (nameChanel);
            doc.selection.store(chRef, SelectionType.REPLACE);
        };
   for( var i = 0; i < doc.channels.length; i++ ) {
        if (ChV[i]) {
        doc.channels[i].visible = true;
        }     else {
            doc.channels[i].visible = false;
            };
    };
    };
    doc.selection.deselect();
    app.preferences.rulerUnits = startRulerUnits;
};
 
  • Спасибо
Реакции: Павел I

Павел I

Участник
Топикстартер
Сообщения
142
Реакции
1
Круто! Всё работает 'cooll)'Снова смогу время сэкономить, спасибо!