Автоматизация размещения копирайта

  • Автор темы Автор темы vasiliyb
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ответ: Автоматизация размещения копирайта

rdes02 сказал(а):
Вроде там можно кидать 2 текста и имедж.
Не разбирался времени нет...

Возможно не правы...

Дак у меня не текст, а растр на прозрачном фоне.
 
Ответ: Автоматизация размещения копирайта

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

Если у вас 7-ой Шоп, то вам нужно скачать с сайта Адобы - Scripting Plugin последней версии и установить его. Сначала распаковать, затем установить сам плагин. После этого все появится.

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

Если решите скриптинг устаналивать, то можно написать прогру или скрипт для размещения хоть десяти логотипов.
 
Ответ: Автоматизация размещения копирайта

Крипт от WereVarg работает, все просто фантастично!

Но, как мне кажется, из-за того, что формат фото не всегда имеет четные значения разрешения, в случае нечетных значений мой логотип получается не четким, теория проверена экспериментально.

Видимо надо округлять значения смещения, а как? Я синтаксиса не знаю, поможете?

Вот скрип рабочий:
Код:
// Запоминаем на будущее текущие настройки и меняем на см
var originalUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.CM;

var Logo_url = "G:/FLEXLOGO/logo_right.psd";

var BG = activeDocument;
var fileRef = new File(Logo_url);
var Logo = open (fileRef);
Logo.resizeImage (Logo.width,Logo.height, BG.resolution);
var x=BG.width/2-Logo.width/2;
var y=BG.height/2-Logo.height/2;
Logo.artLayers[0].copy();
activeDocument=BG;
var LogoLayer = activeDocument.paste();
LogoLayer.translate(x,y);
Logo.close(SaveOptions.DONOTSAVECHANGES);

//Восстанавливаем исходные единицы
preferences.rulerUnits = originalUnit;
 
Ответ: Автоматизация размещения копирайта

Вот эту херню выкиньте и будет все ОК: Logo.resizeImage (Logo.width,Logo.height, BG.resolution);

Там вообще почти все можно выкинуть, конечно же. Потому что сделано неправильно.

Но если вас так устраивает - работайте.
 
Ответ: Автоматизация размещения копирайта

ОК, спасибо большое, все наладил, параллельно узнал массу нового!
 
Ответ: Автоматизация размещения копирайта

"Logo.resizeImage" Это в вашем случае не надо.
А вообще это подгон размера лого под разрешения изображения куда вставляем. Чтобы лого было 2 см и на картинке в 600 дпи и 150 и т.д.
Скрипт для печатных задач написан. В случае вывода на экран это все лишнее (вместе с выбором настроек).
Округляет Math.floor(тут что округлять) до ближайшего меньшего. Остальные навскидку не помню. Но если вы округлите в моем скрипте, то он будет оперировать с целыми сантиметрами. Если хотите чтобы лого вставлялось на полсм от края - добавляйте цифры в расчет смещения по х и у (с минусом).
 
Ответ: Автоматизация размещения копирайта

Нет, вы скажите, нахрен вы его сохраняете-то? Лого, после ресайса? Logo.close(SaveOptions.DONOTSAVECHANGES); - что будет с логотипом после 10 итераций?
 
Ответ: Автоматизация размещения копирайта

А как его закрыть без сохранения?

P.S. А что будет, если 100 раз psd сохранить, ухудшится качество разве?
 
Ответ: Автоматизация размещения копирайта

А, просмотрел, у вас там DONOTSAVECHANGES.

На VB этот аргумент опциональный, и чтобы закрыть документ я просто пишу myDoc.Close()
 
Ответ: Автоматизация размещения копирайта

Вот функция которая позволяет перенести изображение (активный слой) из одного документа в другой.

Код:
Private Sub DocToLayer(TargetDoc As Photoshop.Document)
Dim objApp As New Photoshop.Application
Dim desc32 As New Photoshop.ActionDescriptor
Dim ref27 As New Photoshop.ActionReference
Dim ref28 As New Photoshop.ActionReference
    
    Call ref27.PutEnumerated(objApp.CharIDToTypeID("Lyr "), _
                             objApp.CharIDToTypeID("Ordn"), _
                             objApp.CharIDToTypeID("Trgt"))
    Call desc32.PutReference(objApp.CharIDToTypeID("null"), ref27)
    
    Call ref28.PutName(objApp.CharIDToTypeID("Dcmn"), TargetDoc.Name)
    Call desc32.PutReference(objApp.CharIDToTypeID("T   "), ref28)
    
    Call objApp.ExecuteAction(objApp.CharIDToTypeID("Dplc"), desc32, 3)

End Sub

Тоже самое, но без редактуры на яве:

Код:
var id106 = charIDToTypeID( "Dplc" );
    var desc32 = new ActionDescriptor();
    var id107 = charIDToTypeID( "null" );
        var ref27 = new ActionReference();
        var id108 = charIDToTypeID( "Lyr " );
        var id109 = charIDToTypeID( "Ordn" );
        var id110 = charIDToTypeID( "Trgt" );
        ref27.putEnumerated( id108, id109, id110 );
    desc32.putReference( id107, ref27 );
    var id111 = charIDToTypeID( "T   " );
        var ref28 = new ActionReference();
        var id112 = charIDToTypeID( "Dcmn" );
        ref28.putName( id112, YOUR_DOC_NAME_HERE );
    desc32.putReference( id111, ref28 );
executeAction( id106, desc32, DialogModes.NO );

Вместо YOUR_DOC_NAME_HERE - сами поняли что.

Получено от скриптинг листенера после выполнения команды Layer > Duplicate (там можно указать имя любого открытого в данный момент документа, включая, разумеется, активный док, и новый документ)

Вот, теперь есть путь обойти гребанный буфер обмена.
 
Ответ: Автоматизация размещения копирайта

CMYK искреннее спасибо!

Но у меня все нормально работает и в старом варианте, причем тоже слои берутся напрямую из документов, а не из буфера.

Код:
// Запоминаем на будущее текущие настройки и меняем на см
var originalUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;

var Logo_url = "G:/FLEXLOGO/logo_right.psd";
var Logo_left_url = "G:/FLEXLOGO/logo_left.psd";

var BG = activeDocument;
var fileRef = new File(Logo_url);
var Logo = open (fileRef);
//Logo.resizeImage (Logo.width,Logo.height, BG.resolution);
var x=BG.width/2-89;
var y=BG.height/2-12;
Logo.artLayers[0].copy();
activeDocument=BG;
var LogoLayer = activeDocument.paste();
LogoLayer.translate(x,y);
Logo.close(SaveOptions.DONOTSAVECHANGES);

var BG = activeDocument;
var fileRef = new File(Logo_left_url);
var Logo = open (fileRef);
//Logo.resizeImage (Logo.width,Logo.height, BG.resolution);
var x=-(BG.width/2)+72;
var y=BG.height/2-14;
Logo.artLayers[0].copy();
activeDocument=BG;
var LogoLayer = activeDocument.paste();
LogoLayer.translate(x,y);
Logo.close(SaveOptions.DONOTSAVECHANGES);

//Восстанавливаем исходные единицы
preferences.rulerUnits = originalUnit;

тут продублировано действие т.к. лого 2 шт.
все работает при разных размерах картинки.

Всем огромное спасибо, тема по видимому исчерпана, разве что интерфейс для ввода путей к файлам соорудить и будет полноценный программный продукт:)
 
Ответ: Автоматизация размещения копирайта

Как это не из буфера, если вы сначала копируете в буфер, а затем вставляете из него слой?

Именно избавить от буфера вообще я и предлагал теми функциями.

Можно обойтись без интерфейса. Например так: полагается завести документ фиксированным именем в той же папке где находятся целевые картинки. В документе создать нужное количество слоев и условится, что: имя слоя должно кодировать его положение в целевом документе и расстояние от края (краев). Разделитель - пробел. Например: D R 10 10. Что значит низ-право 10 пикс и 10 пикс. Буквы: U - up, L - left, R- Right, D - Down, M - Middle. Можно даже юниты вводить и обеспечить поддержку.

Но, главное-то не в этом! Было бы полезно написать прогру которая бы расставляла логотипы которые не являются одним слоем, а состоят из нескольких слоев. Это важно, потому что в одном слое вы можете использовать только один режим смешивания и одну величину непрозрачности. А лого состоящее из нескольких слоев выиграет в эстетике когда в нем некоторые слои или эффекты слоев будут иметь специальные режимы смешивания и различную непрозрачность. Для этого нужно изменить скрипт и вместо слоев оперировать наборами слоев (Layer Set).

Метод Duplicate точно также дублирует в целевой документ набор слоев как и отдельный слой.

А методов Copy & Paste для сета разумеется нет. Вот так.
 
Ответ: Автоматизация размещения копирайта

/me кивает :)
 
Ответ: Автоматизация размещения копирайта

/me подставил перевернутое ведро.
 
Программа для автоматизации оформления картинок логотипами и копирайтами

Написал программу. Для Фотошопа. В зип-файле в аттаче. Вроде все работает. Пожелания - сюда. Снапшут прилагается.

Цитирую readme.txt

Чтобы читать этот документ в программе Блокнот (Notepad),
включите Формат > Перенос по словам (WordWarp).

ПРОГРАММА ДЛЯ АВТОМАТИЧЕСКОГО ОФОРМЛЕНИЯ ИЗОБРАЖЕНИЙ ЛОГОТИПАМИ
LogoIt.exe

ОТКАЗ

Программа распространятся как есть. Никакой прямой или подразумеваемой ответственности за использование данной программой автор не несет. Никакие претензии по причинению вреда при использовании данной программой не принимаются.

ТРЕБОВАНИЯ

Требуется компьютер с системой Windows.

Требуется Adobe Photoshop 7.0.1, с установленным Scripting Plugin 1.0.2a. Плагин можно скачать тут: http://www.adobe.com/support/downloads/detail.jsp?ftpID=1536 Инструкция по его установке: сначала дистрибутив распаковывается на инсталляцинные файлы и документацию. Затем, инсталляционный файл следует запустить и поддержка скриптинга для 7-й версии Фотошопа будет установлена.

Программа не требует инсталляции. Достаточно ее скопировать в любое подходящее место и запустить.

ТРЕБОВАНИЯ К ОБРАБАТЫВАЕМЫМ ДОКУМЕНТАМ

Требования к картинкам-логотипам:

Картинки-логотипы должны быть в файлах формата *.psd (Adobe Photoshop).

Глубина цвета картинок-логотипов: 8 бит на канал.

Режим цвета: CMYK, RGB, Lab, Greyscale

Картинки-логотипы могут содержать фон, слои и наборы слоев.

Активным слоем (набором слоев), который будет использоваться, считается тот, который выделен в документе после его открытия.

Требования к обрабатываемым картинкам:

Изображения могут быть в файлах форматов: *.jpg, *.jpeg, *.tif, *.tiff, *.psd, *.psb, *.png

Глубина цвета - 8 бит на канал.

Режим цвета: CMYK, RGB, Lab, Greyscale

ОСОБЕННОСТИ

Каждая картинка-логотип может быть позицирована внутри целевого документа в любое его место.

Количество располагаемых логотипов практически не ограничено. Для пользователей ОС WindowsXX ограничение в 64Кбайта размера файла.

Запись оформленного изображения осуществляется только в формат JPEG (*.jpg) и только с теми опциями, которые доступны в Фотошопе.


С ЧЕГО НАЧАТЬ

Запустите Фотошоп. Запустите программу LogoIt.exe. Укажите путь к папке где хранятся картинки для обработки. Вы можете расположить картинки не только в указанной папке, но и одном уровне ее под-папок. Для того чтобы использовать под-папки, включите флаг Include One Level Subfolder.

ВНИМАНИЕ: Результат записывается поверх исходных картинок. Поэтому, если вы хотите иметь оригиналы без оформления, вам следует подготовить резервную копию всех файлов предназначенных для обработки.

Добавьте нужные файлы с изображением логотипов используя кнопку Add. Если вы хотите удалить какой-то файл из списка, выделите его и нажмите кнопку Delete.

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

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

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

Вы можете видеть каков размер логотипа в пикселах внизу окна программы, когда выберите какой-нибудь файл из списка.

ВНИМАНИЕ: Размер логотипов берется из размеров их документов. Поэтому, если вы будете использовать логотипы со слоями, или наборами слоев, то следует документ обрезать точно по границам логотипа. Это легко сделат командой Фотошопа Image > Trim > Transparent Pixels > Включены все стороны (Top, Bootom, Left, Right - ON).

После того как вы все настроили, можно сохранить установки в текстовом файле. Выберите команду Save, укажите, или впишите в поле диалога имя файла и нажмите OK. Чтобы загрузить ранее сохраненный список - нажмите кнопку Load, укажите файл и нажмите кнопку OK.

ВНИМАНИЕ: Не редактируйте текстовый файл со списком вручную!!! Параметры сохранения в jpeg НЕ ЗАПИСЫВАЮТСЯ в текстовый файл.

КАК РАБОТАТЬ

После того как вы все настроили, переключитесь к Фотошопу, а затем переключитесь к окну программы, так, чтобы окно программы было поверх окна Фотошопа. Расположение окон не важно, но так вы можете контролировать и наблюдать весь процесс. Нажмите кнопку LOGO.

Сначала загрузятся все документы с логотипами. Если в документе какой-либо слой будет защищен от перемещения (Lock), в программе произойдет ошибка о которой будет сообщено.

ВНИМАНИЕ: Если вы в качестве логотипа будете использовать наборы слоев с различными эффектами, то, в случае когда режим цвета логотипа (например CMYK), будет отличаться от режима цвета оформляемой картинки (например RGB), то эффекты могут принять совершенно неожиданный вид. Поэтому, подготовьте логотипы в том же режиме цвета что и картинки.

Если по какой-то причине вам нужно остановить процесс, нажмите на клавиатуре кнопку ESC.

Программа после оформления документа подавляет слои и записывает его под тем же именем, в тот же каталог. Параметры сжатия вы устанавливаете сами.

После обработки всех найденных в указанной папке (и ее подпапках если выбрано) файлов, программа закроет все документы с логотипами и вернет настройки единиц измерения в Фотошопе в исходное состояние.

ФАЙЛЫ

LogoIt.exe, sccrun.dll - на случай если вдруг библиотека Microsoft Scripting Runtime отсутствует, этот файл - readme.txt

Скачать: http://d-signer.narod.ru/scripts.htm

-------------------------------
(c) 2004 d-signer@inbox.ru
 

Вложения

  • logoit.gif
    logoit.gif
    8.3 КБ · Просм.: 530
Ответ: Автоматизация размещения копирайта

Что-то из этого архива у меня файл без расширения разархивируется.
А так хочется посмотреть на плод трудов!

P.S. А мой скрипт на поверку подглючивает, из набора в 100 фото несколько логотипов в сторону улетают он положенного им места, причем раз на раз не приходится, фотки глюком выбираются все время разные. Подозреваю что дело какраз в буфере обмена, хотя х.з.
 
Ответ: Автоматизация размещения копирайта

vasiliyb сказал(а):
Что-то из этого архива у меня файл без расширения разархивируется.
А так хочется посмотреть на плод трудов!
У меня все разархивируется нормально. Вопрос о скачивании файлов уже возникал на форуме. Вывод был сделан такой: файл без расширения - gzip-архив. Припишите к нему расширение .gzip и разархивируйте еще раз. Все должно получиться. Почему так происходит? По всей видимости это зависит от установленного софта на машине, ибо у меня, например, в офисе на одном компьютере все скачивается нормально, а на другом - происходит такая фигня...
 
Ответ: Автоматизация размещения копирайта

Точно,
спасибо!
 
Ответ: Автоматизация размещения копирайта

Фантастика!

Полноценный программный продукт!
Все работает замечательно (тьфу*3)
 
Статус
Закрыто для дальнейших ответов.