Выцепить размеры с помощь скрипта...

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

KeS))

Участник
Топикстартер
Сообщения
128
Реакции
0
Добрый День, уважаемые Гуру!

Как при помощи скрипта выцепить размеры имеющегося изображения.
Конечно можно сделать ручками... типа Ctrl+Alt+I, затем увеличить размер холста и в соответствующем месте написать увиденное ранее.

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

Т.е. хочу чтобы размер на изображении проставлялся автоматически, скажем в СМ.

Вот.

Как это сделать?
 
Ответ: Выцепить размеры с помощь скрипта...

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

#target photoshop

var myDoc = app.activeDocument;
alert (myDoc.width+'\r'+myDoc.height);
 
Ответ: Выцепить размеры с помощь скрипта...

За это конечно спасибо, но хотся чтобы в файле создавалось доп поле, на котором и прописывались бы эти данные... вот.

Буду теперь с вашей подсказкой заморачиваться...)))
 
Ответ: Выцепить размеры с помощь скрипта...

А вот пример того, чего хотелось бы!
Реально ли этого добиться автоматически?
 

Вложения

  • sample.jpg
    sample.jpg
    31.5 КБ · Просм.: 966
Ответ: Выцепить размеры с помощь скрипта...

Добрый День, уважаемые Гуру!
А гурок забыли? Надо так: Добрый день уважаемые гуру и гурки!

Короче, надо писать скрипт - все эти стрелочки и циферки потребуют некоторого кода. Если готовы это делать - сообщите тут. От вас потребуется помощь в виде сведений о том что именно конкретно определенно надо.
 
Ответ: Выцепить размеры с помощь скрипта...

Конечно готов все сделать!
Нарисовать какое бы то ни было выделение в зависимости от ширины и высоты в принципе несложно... (хотя думаю что это будет уже и лишним)
Главное-то текст с размерами.

А вот выцепить данную информацию и представить в виде текста даже не представляю как сделать.

А принцип, достаточно прост.
Есть определенные файлы, и к ним необходимо прописывать информацию о ширине и высоте. Вот и все!

Попробую другой пример привести:

Уважаемые гурчанки и гурки (не наю как правильней) присоединяйтесь!!!
 

Вложения

  • Primer.jpg
    Primer.jpg
    44.4 КБ · Просм.: 905
Ответ: Выцепить размеры с помощь скрипта...

Очень любопытно! А зачем такие файлы?
 
Ответ: Выцепить размеры с помощь скрипта...

Полугурков забыли. :)

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

А как это в текст преобразовать?
У меня что-то не получается... (((
 
Ответ: Выцепить размеры с помощь скрипта...

Создаете текстовый слой из скрипта.

// объектная переменная - указатель на активный документ
var docRef = app.activeDocument;

// Цвет будущего текст, например
var textColor = new SolidColor;
textColor.rgb.red = 255;
textColor.rgb.green = 80;
textColor.rgb.blue = 20;

// добавляется новый слой
var newTextLayer = docRef.artLayers.add();

// определяется его тип
newTextLayer.kind = LayerKind.TEXT;

// задаете координаты левого-нижнего угла текстовго бокса в виде двумерного массива, например
newTextLayer.textItem.position = Array(0.5, docRef.height-0.5);

// кегль шрифта в пунктах
newTextLayer.textItem.size = 10;

// определяете цвет - объектная переменная textColor
newTextLayer.textItem.color = textColor;

// название шрифта - в postscript нотации
newTextLayer.textItem.font = "Tahoma";

// содержание (текст) текстового слоя для ширины
newTextLayer.textItem.contents = docRef.width;
 
Ответ: Выцепить размеры с помощь скрипта...

Что полудурков забыл, это да... наверное потому что сам такой?!

У меня почему-то текстовый слой есть, но он пустой! (((

Возможно с координатами перемудрил... но не думаю..

Насколько я понимаю начало координат двумерного массива - это левый верхний угол? Или я не прав?
 
Ответ: Выцепить размеры с помощь скрипта...

Не полудурков, а полугурков. Если думаете что текст не в окне документа - выделите все и попытайтесь выровнять текст по центру окна.

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

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

Буду теперь разбираться почему же его нет?!

Может потому что он не поддерживает такие команды? Хотя это вряд ли...

Надо еще почитать какого-нить сабжа...
 
Ответ: Выцепить размеры с помощь скрипта...

Выше процитирован образец рабочего скрипта. Возьмите и вставьте в свой код - все должно работать. Если в качестве содержания текстового слоя вы используете строку нулевой длины - надо это проверить через Alert.
 
Ответ: Выцепить размеры с помощь скрипта...

Что-то очень странно, как мой так и ваш скрипт не работает на одной машине... при чем на моей...

На остальных все РУЛЕЗЗЗ))))

Почему так? До сих пор не пойму...
 
Ответ: Выцепить размеры с помощь скрипта...

Вах! Иногда сам себе поражаюсь... но иногда гноблю себя за тупость...

В общем, что есть.

Есть скрипт, который открытый файл делает квадратным 16 на 16 см, потом вставляется на заранее сохраненный бланк А4, куда вписываются оригинальные размеры этого файла. Но вот задачка... необходимо еще встваить и имя существующего файла...

Т.е. как преобразовать имя файла в текстовый слой... у меня почему-то только AdobePhotoshop получается ((

Вот мой скрипт:
PHP:
var docRef = app.activeDocument;
var docFileName = docRef.FullName

var W = docRef.width;
var H = docRef.heigh;
var name = docFileName;

var mySet = "KES"

var textColor = new SolidColor;
textColor.cmyk.cyan = 0;
textColor.cmyk.magenta = 100;
textColor.cmyk.yellow = 100;
textColor.cmyk.black = 20;

var W = docRef.width
var H = docRef.height

if (docRef.width>docRef.height)
	{var myAction = "WidthTo16"}
	else
	{var myAction = "HeightTo16"}

app.doAction (myAction, mySet)

var mySet = "KES"
var myAction = "ToBlank";
app.doAction (myAction, mySet)


var newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;
newTextLayer.textItem.position = Array(5.5,28.6);
newTextLayer.textItem.size = 14;
newTextLayer.textItem.color = textColor;
newTextLayer.textItem.font = "Tahoma"; 
newTextLayer.textItem.contents = W;

var newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;
newTextLayer.textItem.position = Array(9.8,28.6);
newTextLayer.textItem.size = 14;
newTextLayer.textItem.color = textColor;
newTextLayer.textItem.font = "Tahoma"; 
newTextLayer.textItem.contents = H;


var newTextLayer = docRef.artLayers.add();
newTextLayer.kind = LayerKind.TEXT;
newTextLayer.textItem.position = Array(1.2,28.6);
newTextLayer.textItem.size = 14;
newTextLayer.textItem.color = textColor;
newTextLayer.textItem.font = "Tahoma"; 
newTextLayer.textItem.contents = name;

Да кажется большим, но как раз думаю как создать стиль текста и его просто применять?! ...

Но пока главнее задача - преобразовать имя файла в текстовый слой.
Что у меня не так?
 
Ответ: Выцепить размеры с помощь скрипта...

KeS)), не мучайтесь. Делайте это в индизайне.
 
Ответ: Выцепить размеры с помощь скрипта...

Если вы про стили текста, то это понятно что в индюке без вопросов...
А так мне на выходе нада: Tiff, JPG максимального качества и превью с этой хренью...

Мне-то осталось всего название активного документа в этот бланк засунуть... и все... Все работает нажатием одной кнопки в ФШ! ))

Хотя наверное придется два вида бланков делать для Portret и Landscape...

Ну чтобы вообще красиво стало...

--------------------------------------------------------------------------
ПС:А вот скриптинг в ФШ - классная штука... как жаль, что не изучал ее ранее!
 
Ответ: Выцепить размеры с помощь скрипта...

Ява, cuка, объектная. Поэтому надо каждый раз уточнять какое именно свойство объекта вас интересует. В данном случае получить имя файла можно с помощью функции .toString(); которая достает имя файла объектной переменной типа File. Но если у вас есть ссылка (объектная переменная типа Document) на текущий активный документ, вы можете получить имя файла просто с помощью ее свойства .name Например вот скрипт который вставляет имя файла в качестве текстового слоя:

Код:
// Скрипт добавляет имя файла без расширения и точки в текстовый слой с именем TheFileName
// Если такого слоя нет, то он будет создан. Если есть - модифицирован.
// Это позволяет использовать скрипт в паре с экшном, который создаст его
// с необходимыми параметрами: гарнитурой, стилем, цветом, кеглем, расположением;
// Сам скрипт создает текст с параметрами: Tahoma, 10 pt, красный, в левом нижнем углу
// Наличие открытого, где-то сохраненного документа обязательно - иначе будет сообщение об ошибке

var strtRulerUnits = app.preferences.rulerUnits;
var strtTypeUnits = app.preferences.typeUnits;
app.preferences.rulerUnits = Units.CM;
app.preferences.typeUnits = TypeUnits.POINTS;

var docRef = app.activeDocument;
var s = "TheFileName";
var psFile = docRef.name;
psFile = ( psFile.substring ( 0, psFile.length - 4 ) );

app.displayDialogs = DialogModes.NO;

var textColor = new SolidColor;
textColor.rgb.red = 255;
textColor.rgb.green = 0;
textColor.rgb.blue = 0;

try {
	var newTextLayer = docRef.layers[s];
}
catch (e if e = 1302) {
	var newTextLayer = docRef.artLayers.add();
	newTextLayer.kind = LayerKind.TEXT;
	newTextLayer.textItem.position = Array(0, docRef.height);
	newTextLayer.textItem.size = 10;
	newTextLayer.textItem.color = textColor;
	newTextLayer.textItem.font = "Tahoma";
	newTextLayer.name = s;
}

newTextLayer.textItem.contents = psFile;

app.preferences.rulerUnits = strtRulerUnits;
app.preferences.typeUnits = strtTypeUnits;
docRef = null;
textColor = null;
newTextLayer = null;
 
Статус
Закрыто для дальнейших ответов.