Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Изменение размера изображений *.png; *.jpg; *.jpeg; *.bmp (http://forum.oszone.net/showthread.php?t=338291)

it3 18-12-2018 08:10 2846697

Изменение размера изображений *.png; *.jpg; *.jpeg; *.bmp
 
Доброго времени суток!
Есть много изображений (с расширениями: *.png; *.jpg; *.jpeg; *.bmp) в D:\Test, которая содержит много подкаталогов, в которых содержатся тоже изображения.

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

Подойдёт любой язык. Главное чтобы выполнял свою задачу.

Подсобите пожалуйста командой, скриптом.

Iska 18-12-2018 08:19 2846699

Цитата:

Цитата it3
Выходной папкой будет являться каталог с исходными файлами. Имена должны быть так же сохранены. »

Это как?

Цитата:

Цитата it3
уменьшить все изображения путем изменения размера в пикселях сохраняя пропорцию. »

Как именно уменьшить?

Скажу сразу, вам понадобится ImageMagick с параметрами.

it3 18-12-2018 08:23 2846701

Цитата:

Цитата Iska
Это как? »

Путем замены.
Цитата:

Цитата Iska
Как именно уменьшить? »

Можно подробнее вопрос?
HTML код:

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

Iska 18-12-2018 09:33 2846713

Цитата:

Цитата it3
Можно подробнее вопрос? »

Вот есть у нас два изображения, одно 1000x2000, другое 2000x1000. К какому «размеру в пикселях» их надо привести?

Цитата:

Цитата it3
Аналогичные действия делает программа FSViewer. »

И умеет:
Цитата:

А так же не изменять размер, если исходных размер меньше нового
?

it3 18-12-2018 09:45 2846715

Вложений: 1
Цитата:

Цитата Iska
Вот есть у нас два изображения, одно 1000x2000, другое 2000x1000. К какому «размеру в пикселях» их надо привести? »

1000x2000 = 768хN
2000x1000 = 1024xN
Цитата:

Цитата Iska
И умеет: »

Умеет (скриншот во вложении).

Iska 18-12-2018 12:43 2846766

Цитата:

Цитата it3
1000x2000 = 768хN
2000x1000 = 1024xN »

У Вас тут явно в одном месте высота с шириной попутаны ;).


Пробуйте:
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=%~1

if defined sSourceFolder (
        2>nul pushd "%sSourceFolder%" && (
                for /f "usebackq delims=" %%i in (
                        `2^>nul dir /b /a:-d "*.png" "*.jpg" "*.jpeg" "*.bmp"`
                ) do (
                        echo [%%~i]
                        magick.exe "%%~i" -resize 1024x768^> "%%~i"
                )
                popd
        ) || (
                echo Can't change current folder to [%sSourceFolder%]
                exit /b 2
        )
) else (
        echo Usage: %~nx0 ^<Source folder^>
        exit /b 1
)

endlocal
exit /b 0


Путь к исходному каталогу указывается аргументом пакетного файла (также можно просто перетащить папку на пакетный файл в Проводнике).

Для работы Вам потребуется загрузить и установить ImageMagick (если только у Вас не полиграфия — берите либо ImageMagick-7.0.8-16-Q8-x64-static.exe, либо ImageMagick-7.0.8-16-Q8-x86-static.exe в зависимости от разрядности Вашей ОС) отсюда: Download @ ImageMagick, Windows Binary Release.

P.S. Разумеется, изначально «потренируйтесь на кошках».


Время: 12:58.

Время: 12:58.
© OSzone.net 2001-