Показать полную графическую версию : [решено] изменить размер фотографий
v79italya
05-09-2019, 07:25
всем привет. возможно ли изменить размер фотографий скриптом?
в папке есть несколько фото. надо изменить размер по ширине, сохраняя пропорции. в скрипте задавать нужные размеры ширины фото в пикселях. например, 800, 600, 450, 250. новые фото сохранять в ту же папку, добавив к имени исходного размер ширины. например, 1hg8_800.jpg, 1hg8_600.jpg, 1hg8_450.jpg
irfanview работать через консоль, и не требует установки
через скрипт можно его направить на изменение файлов
v79italya
05-09-2019, 09:18
Ageron, спасибо. я не знаю как писать скрипты. не могли бы показать каким должен быть код для этой задачи
возможно ли изменить размер фотографий скриптом? »
Возможно.
Впрочем, если Вас устроит внешняя утилита — будет ещё проще. Как планируется указывать исходные файлы:
в папке есть несколько фото. »
?
v79italya
05-09-2019, 09:55
Iska, наверное, все имеющиеся в папке фото. ненужные удалю вручную.
смогу ответить через часа четыре
не могли бы показать каким должен быть код для этой задачи »
так попробуйте
i_view32.exe c:\pic\*.jpg /resize_short=600 /aspectratio /resample /convert=c:\pic\*_$W.jpg
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, что не так я сделал? »
Сохранили код пакетного файла в качестве скрипта 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 ошибка следующая
вот так не работает »Кавычки, не указываете кавычки. Если в пути 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
не работает. мигнет и все. »
Ну, добавьте третьей строкой снизу 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
а вот так не работает. и к именам не добавляет ширину размера фотографии »Иным обозначением: Заменяют друг друга. Звёздочку в конце не нужно было использовать.
Рабочий пример:
"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. только правильно ли я понял что это сработает если фото будет в альбомном виде? а если в книжном виде, то размер задаст для высоты?
как по быстрому код запускать?
Пуск-> выполнить...-> вызов 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
как и ожидал. мигнуло и ничего не изменилось)
нашел код, »
Где?
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.