Автоматический ресайз фото

migel

Мне нужно обработать довольно много фоток, причем действия почти всегда однообразные: уменшить все размеры в 3 раза.
Вопрос: можно ли как-нибудь автоматизировать этот процесс?
(Уже заботал все хоткейс в паинте, но все равно медленно выходит -) )
п.с. формат жпег.

uncle17

Magic Image Resizer

nas1234

ACDSee
выдеряешь фотки, нажимаешь CTRL+R
выбираешь параметры в кнопке Options (или подобное, не помню) нажимаешь ОК

migel

спасибо-)

amkharchenko

Рекомендую потренировать позвоночник и приступать к ручному вызову программы convert. Каждый раз писать параметры заново. Скриптами не пользоваться.

Sebasten

За три часа, за 30 евров атоматизирую те все твои действия в винде. В юниксе за час, бесплатно

Sebasten

Ладно, уговорил, это только потому что ты мне понравился
Option Explicit
Dim objShell, objFSO
Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
sub DoStuff(fileName)
objShell.Run "mspaint.exe " & Chr(34) & fileName & Chr(34 5, false
WScript.Sleep 700
objShell.SendKeys "^w50{TAB}50~^s" 'Decrease image size in two times
Wscript.Sleep 700
objShell.SendKeys "%{F4}"
End Sub
dim objF
For Each objF in objFSO.GetFolder(objShell.CurrentDirectory).Files
if InStr(lcase(objF.type lcase("image" Then DoStuff(objF.name)
Next

AlexV769

ппц изврат.

Sebasten

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

AlexV769

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

Sebasten

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

AlexV769

а линейный ресамплинг в msmaint - не настолько уж и качественная операция по изменению размеров изображения.
или он уже bicubic умеет?

Sebasten

Яж его только для уменьшения использую, нафига там ресамплинги)

migel

Большое спасибо!

stm7583298

Яж его только для уменьшения использую, нафига там ресамплинги)

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

+100.
Есть даже два способа - встроенные actions и на JavaScript или VBscript. Мне обычно хватает первого.

Sebasten

Гы, а что такое по твоему уменьшение?

Уменьшение в два раза я мысленно представляю как выкидывание каждой второй строчки и каждого второго столбца из картинки.

stm7583298

Зря.

nas1234

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

Elina74

Т.е. уменьшение в 1.5 раз - выкидывание каждой полуторной строчки и каждого полуторного столбца

Sebasten

Ну в полтора ты можешь выкидывать каждые две из трёх

nas1234

сам топи урановые ломы в ртути (с)

Sebasten

Портировал под юникс.

find . -type f -name "*.jpg" -exec sh -c 'djpeg -targa -scale 1/2 "{}" | cjpeg -quality 75 > `dirname "{}"`/new-`basename "{}"`' \;

Там ты со своим асидиси уже хрен что сделаешь? Хотя для винды идея и хорошая, надо думаю мне какой-нибудь попродвинутей редактор чем пэинт и правда освоить.

kruzer25

То есть, из решётки толщиной в один пиксель с шагом в один пиксель ты хочешь получить чёрный квадрат?

Sebasten

В моём алгоритме так получается( Но для обычных фотографий работает очень даже ничего. А кстати, могёшь мне показать такую решётку, какого цвета она интересно будет казаться?

kruzer25

В моём алгоритме так получается
Но должно-то получаться не так!
Конечный пользователь не поймёт, если из фотографии, где есть и чёрный и белый, и которая издали кажется полностью серой, он получит полностью чёрную (или полностью белую).
И конечному пользователю совершенно без разницы, какое там внутреннее представление фотографий, что такое "пиксель" и как информация представляется нулями и единицами.

Sebasten

Ну извини.

migel

ппц
ты и сюда добрался со своим способом.
а что в нем такого ппцшного?
автоматизация нажатий, все клево)

nas1234

тем что изврат какойто. пейнт - он для рисования, а не для обработки изображений.

stm7583298

Про муар ты тоже не слышал?

migel

аа, понял про что ты.

Andbar

Ну в полтора ты можешь выкидывать каждые две из трёх
1-2/3=1/3

danilov

Ни в коем случае не юзай пэинт для ресайза - он делает то, что сказал - выбрасывает строки. Никакого сглаживания он не знает!
Если есть юникс, юзай convert - могу даже скрипт паписать попозжей. А пэинтом - получишь такие говнокартинки, что сам не рад будешь.
Им (пэинтом) можно только losless преобразования далать, шоб не нагадил совсем.

danilov

find . -type f -name "*.jpg" -exec sh -c 'convert "{}" -scale 33%x33% `dirname "{}"`/new-`basename "{}"`' \;

Ivan8209

> Портировал под юникс.
Научу ставить "Цигвин" за 100 руб.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

Ivan8209

> `dirname "{}"`/new-`basename "{}"`
Вот чего я не понимаю, так почему вам всем так понравилось
засорять каталоги новослепленным мусором.
Сложно ещё один find написать?
Или вы просто ухватились за пример как за спасательный круг?
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."

0000

> Уменьшение в два раза я мысленно представляю как выкидывание каждой второй строчки и каждого второго столбца из картинки.
Крута Срочно патентуй такую технологию! (скрипты ты уже запатентовал) чтобы в будущим всем знать чем именно не надо пользоваться
P.S. В Adobe очень просто настрочить подобный скрипт (Action в batch-режиме просто запустить а вот качество ресайза там на порядок лучше чем в paint'e.
P.P.S Как воспользоваться Photoshop'ом как COM-объектом в инете ничего не нашел - наверно на сайт Adobe переться надо...

danilov

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

davidko

удивительно, что никто до сих пор не сказал ни слова про irfan view...

stm7583298

Можно даже action не писать.
Сие я написал за 5 минут, имея под рукой только PS Scripting Guide:

#target photoshop
app.bringToFront;
var dirref = new Folder("/c/temp/photoresize/");
var files = dirref.getFiles("*.jpg");
if(files.length==0) { alert("No files found!"); }
else {
   var saveopts = new JPEGSaveOptions;
   saveopts.quality=9;
  for (var i=0;i<files.length;i++)
  {
  open(files[i]);
  var doc = app.activeDocument;
  var newx = doc.width/2;
  var newy = doc.height/2;
  doc.resizeImage(newx, newy, doc.resolution, ResampleMethod.BICUBIC);
  doc.saveAs(files[i], saveopts, false, Extension.LOWERCASE);
  doc.close;
  }
}

0000

Для написания Action не надо уметь прогать - нажал запись и погнал ;-) как в Office макросы пишутся.

stm7583298

На голых Actions нельзя реализовать некоторые вещи, например отресайзить до фиксированной ширины|высоты кучу кадров разных размеров и ориентации.
Оставить комментарий
Имя или ник:
Комментарий: