Уменьшение фотографий для WEB с распознованием длинной стороны фото

darkad

Member
Joined
Aug 19, 2008
Messages
163
Reaction score
206
Всем привет! Назрел достаточно давний вопрос, как сделать Action, который бы уменьшал фотографии например до размера 800х600, но сам определял где длинная сторона а где нет? В инете не нашёл ничего:( Может кто знает

П.С. интересует создание именно Action`а в фотошопе. Ну или может кто то алгоритм подскажет как с помощью фотошопа узнать какая длинная сторона...
 

Abraxas

ex-Team DUMPz
Premium Member
Platinum
GOLD
Joined
Sep 16, 2022
Messages
1,246
Reaction score
1,561




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

Это хорошо работает, когда размеры всех картинок изначально разные. Когда они одинаковые, то пишется простой экшн на уменьшение в процентном соотношении.

Это то, о чём ты спрашивал?
 
Last edited by a moderator:

darkad

Member
Joined
Aug 19, 2008
Messages
163
Reaction score
206
В этом вся и фишка, что в первом вашем способе нельзя наприемр сразу добавить шарп(в нужном мне количестве) и ещё какие нибудь эффекты, которы можно сделать в экшене, а во втором случае тоже в процентном соотношении не катит, потому что я часто промахиваюсь по композиции и при обработке они у меня часто получаются разных размеров, потому что я их обрезаю.=)

Вот нашёл способ уменьшения изображения по длинной стороне:
1. Создаём файл с названием ResizeImage.jsx
2. Открываем его блокнотом или текстовым редакотором ну или ещё чем нибудь таким и вписываем в него код:
// Обозначаем ширину и высоту
var width = app.activeDocument.width;
var height = app.activeDocument.height;
var act_b_size = "900"; // размер бОльшей строны

// Меняем размер на нужный по бОльшему краю

if (width>height) // Ландшафтная оринтация
{
activeDocument.resizeImage((1*act_b_size+width) /2, (height/width*act_b_size+height) /2,96, ResampleMethod.BILINEAR);
activeDocument.resizeImage(1*act_b_size, height/width*act_b_size,96, ResampleMethod.BICUBIC);
}
else // Портретная ориентация
{
activeDocument.resizeImage((width/height*act_b_size+width) /2,(height+1*act_b_size) / 2,96, ResampleMethod.BILINEAR);
activeDocument.resizeImage(width/height*act_b_size,act_b_size*1,96, ResampleMethod.BICUBIC);
}
3. Сохраняем файл, и помещяем его в папку ...\Program Files\Adobe\Adobe Photoshop CS3\Presets\Scripts
4. Открываем фотошоп, идём в File>Script, выбираем появившийся там скрипт ResizeImage
645179acfd02.jpg


Всё=)

Если файлов много, то можно записать Action, состоящий из одного действия - исполнение этого скрипта, а потом прогнать через Batch. Или из множества действий, но первым будет этот скрипт выполняться.

Всем спасибо за внимание=)
 
Last edited by a moderator:

darkad

Member
Joined
Aug 19, 2008
Messages
163
Reaction score
206
Все привет! Нашёлся способ ещё проще=)

"В меню File найдите слово Automate (ФАЙЛ – Автоматизация) – нам туда. Из Automate перейдите к команде Fit Image – здесь мы установим максимальный выходной размер картинки, которая получится в итоге. Поставьте в окошках два значения 600. Это максимально необходимый размер для изображения в интернете – если вы не хотите его перегружать. И теперь не имеет значения, какой у вас ориентации фотография – портретная или альбомная, Фотошоп все равно сделает 600 px только по длинной стороне. Нажмите ОК команде Fit Image, но файл потом закройте без сохранения."

Вставляешь это действие в экшн и все работает:)
 

Gunnar

ex-Team DUMPz
Joined
Sep 16, 2005
Messages
245
Reaction score
295
Age
45
Location
Ростов-Папа
darkad кстати описанный выше скрипт у меня не пошел с 1-го раза, не было времени посмотреть что и почему - но обязательно посмотрю!
 

darkad

Member
Joined
Aug 19, 2008
Messages
163
Reaction score
206
Gunnar У меня он при уменьшении изображения из за указания метода уменьшения жутко тормазил сначало почему то... Потом пару раз прогнал, вроде нормально заработал... Я так и не понял в чём прикол...
Но пошёл он у меня сразу.

Вот ещё один вариант скрипта

app.preferences.rulerUnits = Units.PIXELS
var h = app.activeDocument.height;
var w = app.activeDocument.width;

if (h > w) {
app.activeDocument.resizeImage((w*800/h),800);
}else{
app.activeDocument.resizeImage(800,(h*800/w));
}
 
Top