Общие

ImageMagick – массовая обработка фоток через командную строку (CMD в Windows). Очень мощный и гибкий.

ImageMagick – массовая обработка фоток через командную строку (CMD в Windows). Очень мощный и гибкий.

ImageMagick – отличный инструмент для этого, и его можно использовать через командную строку (CMD в Windows). Он очень мощный и гибкий.

Вот как это можно сделать, с акцентом на сохранение прозрачности:

  1. Убедитесь, что ImageMagick установлен и WebP поддерживается:
  • Скачайте и установите ImageMagick с официального сайта: https://imagemagick.org/script/download.php

  • Во время установки убедитесь, что вы отметили галочку “Install legacy utilities (e.g. convert)”, если планируете использовать команду convert напрямую. В новых версиях основной командой является magick.

  • Также убедитесь, что ImageMagick скомпилирован с поддержкой WebP (делегат libwebp). Обычно это так в стандартных сборках. Вы можете проверить это командой magick -version или convert -version и поискать webp в списке делегатов (delegates).

  1. Конвертация одного файла (для теста):

Перейдите в CMD в папку, где находится ваш PNG-файл.

  • Для сохранения прозрачности с наилучшим качеством (рекомендуется для прозрачности – Lossless WebP):
convert input.png -define webp:lossless=true output.webp

Или, если используете новую версию ImageMagick:

magick input.png -define webp:lossless=true output.webp
  • -define webp:lossless=true: эта опция указывает ImageMagick использовать WebP в режиме без потерь, что идеально для сохранения точной прозрачности и цветов.

  • Для сохранения прозрачности с потерями (Lossy WebP, файлы меньше, но возможны артефакты): Если вам все же нужен формат с потерями для уменьшения размера файла, ImageMagick обычно хорошо справляется с альфа-каналом.

convert input.png -quality 80 output.webp

Или:

magick input.png -quality 80 output.webp
  • -quality 80: Устанавливает качество (0-100). Для WebP с прозрачностью хорошее качество важно, чтобы минимизировать артефакты вокруг прозрачных областей. 80 – это хороший старт.

  • ImageMagick по умолчанию должен пытаться сохранить альфа-канал, если он есть в исходном PNG. Если возникают проблемы, можно попробовать добавить -alpha on или -alpha activate перед output.webp, хотя это обычно не требуется.

  1. Массовая (пакетная) конвертация всех PNG в текущей папке:

Это можно сделать с помощью цикла FOR в CMD.

  • Массовая конвертация в Lossless WebP (рекомендуется):
FOR %f IN (*.png) DO convert "%f" -define webp:lossless=true "%~nf.webp"

Или с magick:

FOR %f IN (*.png) DO magick "%f" -define webp:lossless=true "%~nf.webp"
  • Массовая конвертация в Lossy WebP:
FOR %f IN (*.png) DO convert "%f" -quality 80 "%~nf.webp"

Или с magick:

FOR %f IN (*.png) DO magick "%f" -quality 80 "%~nf.webp"

Разбор команд для массовой конвертации:

  • FOR %f IN (*.png): Это цикл.

  • %f: Переменная, которая на каждой итерации будет содержать имя очередного PNG-файла (например, image1.png).

  • (*.png): Маска для поиска всех файлов с расширением .png в текущей директории.

  • DO: Указывает, какую команду выполнять для каждого найденного файла.

  • convert "%f" ... "%~nf.webp":

  • "%f": Имя входного файла (в кавычках, на случай если в имени файла есть пробелы).

  • "%~nf": Это специальный модификатор для переменной цикла. Он извлекает имя файла без расширения. Например, если %f это image1.png, то %~nf будет image1.

  • .webp: Добавляем новое расширение.

  • Кавычки вокруг выходного имени тоже важны для имен с пробелами.

Важно для пакетных (.bat) файлов: Если вы будете записывать эти команды в .bat или .cmd файл, то переменные цикла нужно удваивать: %f становится %%f, а %~nf становится %%~nf. Пример для .bat файла (lossless):

@echo off
FOR %%f IN (*.png) DO (
echo Converting %%f ...
magick "%%f" -define webp:lossless=true "%%~nf.webp"
)
echo Done.

Если фон все равно становится зеленым:

  • Убедитесь, что вы точно используете -define webp:lossless=true. Это самый надежный способ.

  • Проверьте версию ImageMagick и libwebp. Возможно, в старой версии был баг. magick -version.

  • Попробуйте очистить фон в PNG перед конвертацией, если подозреваете, что там “грязный” альфа-канал. Иногда это можно сделать, добавив опцию, которая явно указывает, что считать прозрачным, например, -transparent white (если исходный фон был белым), но это нужно делать осторожно. Для WebP это обычно не требуется, если альфа-канал корректен.

  • Убедитесь, что исходные PNG действительно имеют корректный альфа-канал, а не просто зелёный фон, который вы принимаете за прозрачность в каком-то просмотрщике.

Начните с lossless варианта – он должен решить проблему с зелёным фоном при конвертации PNG с прозрачностью.

Вот как это можно сделать, с акцентом на сохранение прозрачности:

  1. Убедитесь, что ImageMagick установлен и WebP поддерживается:
  • Скачайте и установите ImageMagick с официального сайта: https://imagemagick.org/script/download.php

  • Во время установки убедитесь, что вы отметили галочку “Install legacy utilities (e.g. convert)”, если планируете использовать команду convert напрямую. В новых версиях основной командой является magick.

  • Также убедитесь, что ImageMagick скомпилирован с поддержкой WebP (делегат libwebp). Обычно это так в стандартных сборках. Вы можете проверить это командой magick -version или convert -version и поискать webp в списке делегатов (delegates).

  1. Конвертация одного файла (для теста):

Перейдите в CMD в папку, где находится ваш PNG-файл.

  • Для сохранения прозрачности с наилучшим качеством (рекомендуется для прозрачности – Lossless WebP):
convert input.png -define webp:lossless=true output.webp

Или, если используете новую версию ImageMagick:

magick input.png -define webp:lossless=true output.webp
  • -define webp:lossless=true: эта опция указывает ImageMagick использовать WebP в режиме без потерь, что идеально для сохранения точной прозрачности и цветов.

  • Для сохранения прозрачности с потерями (Lossy WebP, файлы меньше, но возможны артефакты): Если вам все же нужен формат с потерями для уменьшения размера файла, ImageMagick обычно хорошо справляется с альфа-каналом.

convert input.png -quality 80 output.webp

Или:

magick input.png -quality 80 output.webp
  • -quality 80: Устанавливает качество (0-100). Для WebP с прозрачностью хорошее качество важно, чтобы минимизировать артефакты вокруг прозрачных областей. 80 – это хороший старт.

  • ImageMagick по умолчанию должен пытаться сохранить альфа-канал, если он есть в исходном PNG. Если возникают проблемы, можно попробовать добавить -alpha on или -alpha activate перед output.webp, хотя это обычно не требуется.

  1. Массовая (пакетная) конвертация всех PNG в текущей папке:

Это можно сделать с помощью цикла FOR в CMD.

  • Массовая конвертация в Lossless WebP (рекомендуется):
FOR %f IN (*.png) DO convert "%f" -define webp:lossless=true "%~nf.webp"

Или с magick:

FOR %f IN (*.png) DO magick "%f" -define webp:lossless=true "%~nf.webp"
  • Массовая конвертация в Lossy WebP:
FOR %f IN (*.png) DO convert "%f" -quality 80 "%~nf.webp"

Или с magick:

FOR %f IN (*.png) DO magick "%f" -quality 80 "%~nf.webp"

Разбор команд для массовой конвертации:

  • FOR %f IN (*.png): Это цикл.

  • %f: Переменная, которая на каждой итерации будет содержать имя очередного PNG-файла (например, image1.png).

  • (*.png): Маска для поиска всех файлов с расширением .png в текущей директории.

  • DO: Указывает, какую команду выполнять для каждого найденного файла.

  • convert "%f" ... "%~nf.webp":

  • "%f": Имя входного файла (в кавычках, на случай если в имени файла есть пробелы).

  • "%~nf": Это специальный модификатор для переменной цикла. Он извлекает имя файла без расширения. Например, если %f это image1.png, то %~nf будет image1.

  • .webp: Добавляем новое расширение.

  • Кавычки вокруг выходного имени тоже важны для имен с пробелами.

Важно для пакетных (.bat) файлов: Если вы будете записывать эти команды в .bat или .cmd файл, то переменные цикла нужно удваивать: %f становится %%f, а %~nf становится %%~nf. Пример для .bat файла (lossless):

@echo off
FOR %%f IN (*.png) DO (
echo Converting %%f ...
magick "%%f" -define webp:lossless=true "%%~nf.webp"
)
echo Done.

Если фон все равно становится зеленым:

  • Убедитесь, что вы точно используете -define webp:lossless=true. Это самый надежный способ.

  • Проверьте версию ImageMagick и libwebp. Возможно, в старой версии был баг. magick -version.

  • Попробуйте очистить фон в PNG перед конвертацией, если подозреваете, что там “грязный” альфа-канал. Иногда это можно сделать, добавив опцию, которая явно указывает, что считать прозрачным, например, -transparent white (если исходный фон был белым), но это нужно делать осторожно. Для WebP это обычно не требуется, если альфа-канал корректен.

  • Убедитесь, что исходные PNG действительно имеют корректный альфа-канал, а не просто зелёный фон, который вы принимаете за прозрачность в каком-то просмотрщике.

Начните с lossless варианта – он должен решить проблему с зелёным фоном при конвертации PNG с прозрачностью.

для конвертации всех PNG-файлов в указанной папке и всех её подпапках в WebP с сохранением прозрачности (и чтобы WebP файлы создавались рядом с исходными PNG), вы можете использовать команду FOR /R в CMD.

Важно:

  • Убедитесь, что ImageMagick установлен и путь к нему добавлен в системную переменную PATH, чтобы вы могли вызывать magick (или convert) из любой директории.

  • Сделайте резервную копию ваших файлов перед запуском массовых операций, на всякий случай.

  • Эти команды будут создавать файлы .webp рядом с оригинальными .png. Они не будут удалять исходные PNG.

Команда для запуска непосредственно в CMD:

Откройте командную строку (CMD). Вам не обязательно переходить в саму папку, так как вы укажете полный путь.

FOR /R "C:\Users\ourja\OneDrive\Desktop\мастино-рендеры\r\FAMILY-ECO\Правое открывание\Панели внутренние\Панель внутренняя 184" %I IN (*.png) DO magick "%I" -define webp:lossless=true "%~dpnI.webp"

Разберем команду:

  • FOR /R "C:\Users\ourja\OneDrive\Desktop\мастино-рендеры\r\FAMILY-ECO\Правое открывание\Панели внутренние\Панель внутренняя 184":

  • FOR /R: Запускает цикл рекурсивно (включая все подпапки) по указанному пути.

  • "C:\Users\ourja\OneDrive\Desktop\мастино-рендеры\r\FAMILY-ECO\Правое открывание\Панели внутренние\Панель внутренняя 184": Это ваша корневая папка для поиска. Кавычки обязательны, так как в пути могут быть пробелы.

  • %I: Это переменная цикла, которая будет последовательно принимать значение полного пути к каждому найденному файлу. Вы можете использовать любую другую букву, например %f.

  • IN (*.png): Указывает, что мы ищем все файлы с расширением .png.

  • DO: Команда, которая будет выполняться для каждого найденного файла.

  • magick "%I" -define webp:lossless=true "%~dpnI.webp":

  • magick: Команда ImageMagick (если у вас старая версия, может быть convert).

  • "%I": Полный путь к исходному PNG-файлу. Кавычки важны.

  • -define webp:lossless=true: Опция для создания WebP без потерь, что наилучшим образом сохраняет прозрачность и предотвращает появление нежелательных фоновых цветов.

  • "%~dpnI.webp": Это формирует имя выходного файла:

  • %~dpI: Извлекает диск и путь к файлу %I (например, C:\папка\подпапка\).

  • %~nI: Извлекает имя файла %I без расширения (например, image1).

  • .webp: Добавляет новое расширение.

  • В итоге получается полный путь к новому WebP файлу в той же папке, что и исходный PNG, но с расширением .webp. Кавычки важны.

Если вы хотите создать .bat или .cmd файл для этого:

В пакетных файлах переменные цикла FOR нужно удваивать (например, %I становится %%I).

Содержимое .bat файла (например, convert_to_webp.bat):

@echo off
set "START_FOLDER=C:\Users\ourja\OneDrive\Desktop\мастино-рендеры\r\FAMILY-ECO\Правое открывание\Панели внутренние\Панель внутренняя 184"

echo Starting conversion in "%START_FOLDER%" and its subfolders...

FOR /R "%START_FOLDER%" %%I IN (*.png) DO (
echo Converting "%%I" to "%%~dpnI.webp"
magick "%%I" -define webp:lossless=true "%%~dpnI.webp"
)

echo Conversion complete.
pause

Пояснения к .bat файлу:

  • @echo off: Отключает вывод выполняемых команд на экран.

  • set "START_FOLDER=...": Задает переменную для пути, чтобы его было легче изменить при необходимости.

  • echo ...: Выводит информационные сообщения.

  • %%I и %%~dpnI: Удвоенные проценты для переменных в пакетном файле.

  • pause: Делает паузу в конце, чтобы вы могли увидеть сообщения перед закрытием окна CMD.

Чтобы использовать:

  • Скопируйте код для .bat файла в текстовый редактор (например, Блокнот).

  • Сохраните файл с расширением .bat (например, convert_to_webp.bat) в любом удобном месте.

  • Запустите этот .bat файл двойным кликом.

Это должно решить проблему с зелёным фоном, так как webp:lossless=true — самый надёжный способ сохранить прозрачность из PNG в WebP.


Ищете надежного партнера по веб-разработке и автоматизации? Мы помогаем бизнесу расти с помощью современных технологий, автоматизации процессов и экспертного SEO. Свяжитесь с нами, чтобы обсудить вашу задачу.

🚀 Нужна помощь с сайтом на 1С-Битрикс или Аспро?

Я работаю удалённо по всей России и СНГ. Узнайте цены и условия для вашего города:

Все регионы →