Войти

Показать полную графическую версию : [решено] изменить размер фотографий


Страниц : [1] 2

v79italya
05-09-2019, 07:25
всем привет. возможно ли изменить размер фотографий скриптом?
в папке есть несколько фото. надо изменить размер по ширине, сохраняя пропорции. в скрипте задавать нужные размеры ширины фото в пикселях. например, 800, 600, 450, 250. новые фото сохранять в ту же папку, добавив к имени исходного размер ширины. например, 1hg8_800.jpg, 1hg8_600.jpg, 1hg8_450.jpg

Ageron
05-09-2019, 09:13
irfanview работать через консоль, и не требует установки
через скрипт можно его направить на изменение файлов

v79italya
05-09-2019, 09:18
Ageron, спасибо. я не знаю как писать скрипты. не могли бы показать каким должен быть код для этой задачи

Iska
05-09-2019, 09:42
возможно ли изменить размер фотографий скриптом? »
Возможно.

Впрочем, если Вас устроит внешняя утилита — будет ещё проще. Как планируется указывать исходные файлы:
в папке есть несколько фото. »
?

v79italya
05-09-2019, 09:55
Iska, наверное, все имеющиеся в папке фото. ненужные удалю вручную.
смогу ответить через часа четыре

Ageron
05-09-2019, 10:54
не могли бы показать каким должен быть код для этой задачи »

так попробуйте
i_view32.exe c:\pic\*.jpg /resize_short=600 /aspectratio /resample /convert=c:\pic\*_$W.jpg

Iska
05-09-2019, 11:16
v79italya, попробуйте так:
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
if exist "%sSourceFolder%\." (
if exist "%ProgramFiles%\NConvert\nconvert.exe" (
pushd "%sSourceFolder%"
for /f "usebackq delims=" %%i in (
`2^>nul dir /a:-d /b "*.*"`
) do for %%j in (800 600 450 250) do "%ProgramFiles%\NConvert\nconvert.exe" -v -overwrite -o %%_%%j -keepfiledate -resize %%j 0 -ratio -rflag orient "%%~i"
popd
) else (
echo Can't find programm [nconvert.exe] in folder [%ProgramFiles%\NConvert].
exit /b 3
)
) else (
echo Can't find source folder [%sSourceFolder%].
exit /b 2
)
) else (
echo Usage: %~nx0 ^<Source folder^>
exit /b 1
)

endlocal
exit /b 0

Вам понадобится загрузить архив XnView Software · nConvert (https://www.xnview.com/en/nconvert/) соответствующей разрядности и извлечь содержимое в каталог «%ProgramFiles%\NConvert». Целевой каталог задаётся параметром пакетного файла (также можно просто перетащить каталог на пакетный файл в Проводнике).

v79italya
05-09-2019, 15:07
Ageron, что не так я сделал?
Iska, что не так я сделал?

Iska
05-09-2019, 19:20
Iska, что не так я сделал? »
Сохранили код пакетного файла в качестве скрипта WSH. Поменяйте расширение с «.js» на «.cmd».

Ageron, что не так я сделал? »
Не загрузили/не установили IrfanView, либо сделали то и другое, но не добавили путь к нему в PATH/не указали полный путь к исполняемому файлу IrfanView.

v79italya
05-09-2019, 20:00
меняйте расширение с «.js» на «.cmd». » не работает. мигнет и все. может пути не те. не вижу как задать папку с фотографиями. в notepad нет .cmd, поэтому задал расширение вручную.
не указали полный пут » вот так не работает - C:\Program Files\IrfanView\i_view32.exe C:\abc\a\a\*.jpg /resize_short=600 /aspectratio /resample /convert=C:\abc\a\b\*_$W.jpg ошибка следующая

Nordek
05-09-2019, 20:56
вот так не работает »Кавычки, не указываете кавычки. Если в пути ProgramFiles есть пробел Program Files, необходимо указать кавычки "Program Files".
Пример:
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=600 /aspectratio /resample /convert=C:\abc\a\b\*_$W.jpg

Iska
05-09-2019, 21:01
не работает. мигнет и все. »
Ну, добавьте третьей строкой снизу pause:


pause
endlocal
exit /b 0

будет видно.

вот так не работает - C:\Program Files\IrfanView\i_view32.exe C:\abc\a\a\*.jpg /resize_short=600 /aspectratio /resample /convert=C:\abc\a\b\*_$W.jpg ошибка следующая »
Обрамите путь с пробелами кавычками (а лучше взять в привычку делать это со всеми путями):
"%ProgramFiles%\IrfanView\i_view32.exe" "C:\abc\a\a\*.jpg" …

v79italya
05-09-2019, 23:03
Nordek, Iska, спасибо. заработало. а вот так не работает. и к именам не добавляет ширину размера фотографии
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=800 /aspectratio /resample /convert=C:\abc\a\b\*_$W.jpg
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=600 /aspectratio /resample /convert=C:\abc\a\b\*_$W.jpg
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=450 /aspectratio /resample /convert=C:\abc\a\b\*_$W.jpg
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=250 /aspectratio /resample /convert=C:\abc\a\b\*_$W.jpg

Nordek
06-09-2019, 02:49
а вот так не работает. и к именам не добавляет ширину размера фотографии »Иным обозначением: Заменяют друг друга. Звёздочку в конце не нужно было использовать.

Рабочий пример:
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=800 /aspectratio /resample /convert=C:\abc\a\b\$N_$W.jpg
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=600 /aspectratio /resample /convert=C:\abc\a\b\$N_$W.jpg
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=450 /aspectratio /resample /convert=C:\abc\a\b\$N_$W.jpg
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.jpg /resize_short=250 /aspectratio /resample /convert=C:\abc\a\b\$N_$W.jpg

v79italya
06-09-2019, 05:33
Nordek, спасибо Вам большое. Все работает. Только меняет не ширину, а высоту.
и можно ли запустить этот код не выполняя действия: Пуск-> выполнить...-> вызов cmd-> вставка кода-> Enter . например, как Js-скрипт, по нажатия файла.

v79italya
06-09-2019, 06:36
нашел как поменять высоту на ширину. short на long. только правильно ли я понял что это сработает если фото будет в альбомном виде? а если в книжном виде, то размер задаст для высоты?

как по быстрому код запускать?

Nordek
06-09-2019, 23:42
Пуск-> выполнить...-> вызов cmd-> вставка кода-> Enter »

Такой колхоз для контекстного меню по картинке jpg (Примеры для W 600 и H 600):
Добавить в контекстноге меню:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jpegfile\shell\covert_w_600\command]
@="\"C:\\Program Files\\IrfanView\\i_view32.exe\" %1 /resize=(600,0) /aspectratio /resample /convert=conver_w_600\\$N_$W.jpg"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jpegfile\shell\convert_h_600\command]
@="\"C:\\Program Files\\IrfanView\\i_view32.exe\" %1 /resize=(0,600) /resample /aspectratio /convert=conver_h_600\\$N_$W.jpg"


Удалить из контекстного меню:
Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jpegfile\shell\covert_w_600]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jpegfile\shell\convert_h_600]

только правильно ли я понял что это сработает если фото будет в альбомном виде? »
Приведу два примера:
Первый:
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.* /resize_short=640 /aspectratio /resample /convert=C:\abc\a\b\$N_$W.jpg
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.* /resize_long=640 /aspectratio /resample /convert=C:\abc\a\b\$N_$W.jpg

Второй:
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.* /resize=(640,0) /aspectratio /resample /convert=C:\abc\a\b\$N_$W.jpg
"C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\*.* /resize=(0,640) /aspectratio /resample /convert=C:\abc\a\b\$N_$W.jpg

/resize_short - портретный по горизонтали (высота), альбомный по вертикали (ширина)
/resize_long - портретный по вертикали (ширина), альбомный по горизонтали (высота)

/resize=(640,0) - Альбомный и портретный по вертикали (ширина)
/resize=(0,640) - Альбомный и портретный по горизонтали (высота)
Далее:
/aspectratio производит изменение размеров пропорционально, т.е если задано например /resize=(640,0) - то по первому значению изменение следует заданному числу ширины, высота изменяется автоматически т.к следует привязка. Без указания /aspectratio привязка к высоте не следует, изменяется только ширина.

v79italya
07-09-2019, 07:26
Nordek, СПАСИБО. наконец то стало более-менее понятно. мне, как я понял, подходит /resize=(640,0) .
можно еще вопрос. нашел код, который на выделенных изображениях пишет надпись "Доброе утро", цвет RGB 008080, размер шрифта 38, стиль шрифта 3, шрифт Arial, позиция 5px слева верхнего левого угла, 10px сверху верхнего левого угла*. вот этот кодimgcf=%P%N||"%t"//0||imgtext<Доброе~~утро|008080|38|3|Arial|5|10>
как этот код прикрутить к InffanView?
попробовал так: "C:\Program Files\IrfanView\i_view32.exe" C:\abc\a\a\1hg8.jpg //0||imgtext<Доброе~~утро|008080|38|3|Arial|5|10> C:\abc\a\b\$N_$W.jpg
как и ожидал. мигнуло и ничего не изменилось)

Iska
07-09-2019, 17:01
нашел код, »
Где?

v79italya, может Вы зараз озвучите все хотелки, и дорога у нас ляжет прямиком к ImageMagick?

v79italya
07-09-2019, 17:18
Где? » вот http://tcimg.dreamlair.net/TCIMG_ONLINE/html/html/tem/tem_image.htm ссылка.
озвучите все хотелки » так эта хотелка пришла опосля. прогуглил resize=(640,0), и нашел эту ссылку. вот и захотел применить попробовать.




© OSzone.net 2001-2012