• Можно ли в Photoshop автоматизировать замену текста и экспорт?

    @Redproxima
    Студент технического ВВУЗ'а
    Пользуйтесь! Достаточно мало-мальских понимания в программировании, чтобы понять, что и где менять. Более крутые приемы на подобие обводок текста, теней и прочей стилистики - это пока рано для вашего случая. Сохранить исходник в формате *.jsx, а запускать Файл -> Сценарии -> Обзор... Перед запуском создать пустой слой поверх фона и поставить выбор на него.
    Скрипт хавает текстовик, где в каджой строке новое имя или фамилия или все вместе. Пробелы допустимы. Переснос строки энтером.

    app.bringToFront();
    var strtRulerUnits = app.preferences.rulerUnits;
    var strtTypeUnits = app.preferences.typeUnits;
    app.preferences.rulerUnits = Units.INCHES;
    app.preferences.typeUnits = TypeUnits.POINTS;
    var docRef = app.activeDocument;
    
    
    var textColor = new SolidColor; //Цвета текста в RGB
    textColor.rgb.red = 36;
    textColor.rgb.green = 36;
    textColor.rgb.blue = 36;
    
    
    app.displayDialogs = DialogModes.NO;
    var myFile = File('/e/1. Projects/Новый Год 2022/На конверты/Кому.txt');
    if (myFile.exists == true){
    myFile.open('r', undefined, undefined)
    var line;
    var index = 1;
    while(!myFile.eof)
    {
    line = myFile.readln();
    createText(line); // создание нового текстового слоя
    var file_name = app.activeDocument.activeLayer.name; 
    saveJPEG( app.activeDocument, new File('/e/1/'+index+"_"+file_name+".jpeg"), 12 ); //Путь и имя сохранения. По-умоланию берется строка из текстовика
    var length = app.activeDocument.layers.length;
    app.activeDocument.layers[0].visible = false;
    app.activeDocument.layers[1].visible = false;
    //app.activeDocument.activeLayer.visible = false;
    index++;
    }
    myFile.close();
    } else {
    new File(myFile);
    }
    function createText(text){
    
    var text_array = text.split("|");
    
    var newTextLayer = docRef.artLayers.add();
    newTextLayer.kind = LayerKind.TEXT;
    newTextLayer.textItem.contents = text_array[0]+"";
    
    
    newTextLayer.textItem.position = Array(8.30, 0.75); // расположение текста на изображении по X и Y. Придется поигарть в морской бой
    newTextLayer.textItem.size = 24; // размер текста
    newTextLayer.textItem.justification = Justification.RIGHT; //Якорная точка текстового слоя (Читай: выравнивание слева, справа и по центрe. Может быть RIGHT CENTER или LEFT 
    newTextLayer.textItem.font = "PhillippScript"; // тип шрифта (семейство указывать не научился. Типа Regular или Italic)
    newTextLayer.textItem.color = textColor; 
    newTextLayer.textItem.fauxBold = false; //Жырный или нет true или false
    
    
    }
    function saveJPEG( doc, saveFile, qty ) {
         var saveOptions = new JPEGSaveOptions( );
         saveOptions.embedColorProfile = true;
         saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;
         saveOptions.matte = MatteType.NONE;
         saveOptions.quality = qty; 
         doc.saveAs( saveFile, saveOptions, true );
    }
    
    app.preferences.rulerUnits = strtRulerUnits;
    app.preferences.typeUnits = strtTypeUnits;
    docRef = null;
    textColor = null;
    newTextLayer = null;


    Какая-то часть документации здесь. Остальное гуглится по запросу JS Photoshop Scripting
    Для колдунства со стилями рекомендую (вам нужен ScriptingListener), придется почитать документацию, я проверял, работает как часы, но в рамках одного поста я инструкцию не опишу.
    Удачи всем!
    Ответ написан
    Комментировать
  • Почему не работает алгоритм сортировки вставкой на c++?

    @Redproxima
    Студент технического ВВУЗ'а
    5a92f8b1af067174789070.pngСильно надеюсь, что мой пример кому-нибудь поможет. Тот же учебник, та же задача. Пример на языке Си. Если есть ошибки или кто-то может дать рекомендацию по оптимизации алгоритма - жду комментариев.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i;
        int j;
        int key;
        int n;
        printf("Enter N; N - the size of Array\n");
        scanf("%d", &n);
        int A[n];
    
        for(i=0; i<=n-1; i++){
            printf("Enter A[%d] = ",i);
            scanf("%d", &A[i]);
        }
        for(j=1; j<=n-1; ++j){
            key = A[j];
            i=j-1;
    
            while(i>=0 && A[i]>key){
                A[i+1]=A[i];
                i=i-1;
            }
        A[i+1]=key;
        }
        for(i=0; i<=n-1; i++){
            printf("%d\ ", A[i]);
    
    }
    return 0;
    }
    Ответ написан