Якщо ви щодня працюєте із зображеннями, рано чи пізно вам доведеться зіткнутися з цим страшним моментом: змінювати розмір, форматувати або оптимізувати сотні чи тисячі файлів одночасноРобити це вручну за допомогою графічного редактора – божевілля, не кажучи вже про величезну втрату часу. Гарна новина полягає в тому, що за допомогою ImageMagick та кількох пов’язаних інструментів ви можете автоматизувати майже весь процес з терміналу.
У цій статті ми розглянемо, як скористатися перевагами ImageMagick для пакетної оптимізації та конвертації зображеньпоєднуючи його за потреби з іншими утилітами, такими як mogrify, cwebp o jpegtranВи побачите практичні приклади в Linux (bash), але багато команд чудово адаптуються до Windows та macOS.
Навіщо нам потрібно оптимізувати та пакетно конвертувати зображення?
Змінити одне фото дуже просто: Будь-який переглядач або графічний редактор дозволяє змінювати розмір та формат. двома кліками. Проблема починається, коли це вже не просто одна чи дві фотографії, а десятки тисяч, розподілених по папках або величезних бібліотеках.
Уявіть собі випадки, як-от сайт моделювання з понад 300 000 зображень JPEG та PNGБагато з цих зображень мають розмір від 1 до 15 МБ. Якщо значна частина вашої аудиторії підключається за допомогою скромного з’єднання (наприклад, користувачі в Німеччині з повільним ADSL), завантаження цих зображень на вебсайт стає кошмаром як для користувача, так і для сервера.
Також дуже часто виникає потреба зменшити розмір фотографій за один раз надсилати електронною поштою, ділитися через Dropbox/Google Диск або готувати матеріали для презентацій. Робити це вручну нудно та неефективно; розумним рішенням буде автоматизувати це завдання за допомогою скриптів та консольних інструментів.
Загальні параметри для проектів з багатьма зображеннями
Перш ніж заглиблюватися в ImageMagick, важливо зрозуміти, що існує кілька стратегій для його роботи. масивні медіатеки, як-от на дуже великому вебсайті:
- Плагіни або інструменти для масового перетворення всередині CMS (наприклад, плагіни WordPress, які конвертують у WebP). Вони можуть добре працювати в бібліотеках середнього розміру, але з сотнями тисяч зображень вони часто не виконують свою функцію, перевищують час очікування або перевантажують сервер.
- Оптимізація на рівні CDN (Наприклад, платний план Cloudflare з оптимізацією/польською). У цьому випадку CDN надає оптимізовані версії (або WebP) без необхідності повторної конвертації всіх оригінальних файлів. Це зручний та масштабований варіант, хоча ви залежите від провайдера та не зменшуєте дисковий простір на вихідному сервері.
- Пакетна обробка на системному рівні Використання ImageMagick, cwebp та інших інструментів командного рядка. Це вимагає трохи більше початкової роботи (скрипти, тестування, резервні копії), але дає вам повний контроль над форматами, якостями, шляхами та робочими процесами. Це ідеально підходить, коли ви хочете очистити стару бібліотеку або підготувати ресурси дуже специфічним чином.
У багатьох великих проектах найкращим підходом є поєднання обох: Оптимізуйте та пакетно конвертуйте історичні дані за допомогою ImageMagick і, в той же час, спираючись на CDN відполірувати та показати найлегшу можливу версію відповідно до браузера.
Базова інсталяція ImageMagick та пов'язаних інструментів
Перше, очевидно, це його встановлення ImageMagick та додаткові утиліти який би ви ні хотіли використовувати. У більшості дистрибутивів Linux ви можете просто скористатися менеджером пакетів:
- Debian/Ubuntu (та похідні):
sudo apt-get install imagemagick
або
sudo aptitude install imagemagick - openSUSE, Fedora тощо.: встановлює пакет
imagemagickз офіційних репозиторіїв або через графічні інструменти вашого дистрибутива.
У Windows та macOS ви можете завантажити інсталятор безпосередньо з Офіційний веб-сайт ImageMagickякий надає готові до використання бінарні файли. Під час встановлення обов’язково виберіть опцію додавання бінарних файлів до Системний ШЛЯХ щоб мати можливість користуватися magick, convert o mogrify безпосередньо з терміналу.
Якщо офіційні пакети створюють проблеми (наприклад, помилки під час конвертації з XCF У Debian/Ubuntu є скрипти, такі як «ImageMagick Easy Install (IMEI)», які автоматично завантажують, компілюють та встановлюють новішу версію з вихідних кодів.
Деякі універсальні локальні середовища розробки, такі як СервБей, вже включають Попередньо встановлені ImageMagick, cwebp, jpegtran, djpeg, cjpeg та img2webp та додано до PATH, що дозволяє використовувати ці інструменти без додаткового налаштування з інтегрованого терміналу.
Ключові команди ImageMagick для базового використання
ImageMagick — це не окрема програма, а колекція утиліт командного рядка зосереджені на маніпуляції зображеннями. Найтиповіші з них під час оптимізації та конвертації:
- магія / навернення: трансформувати зображення (змінювати розмір, формат, застосовувати фільтри, композицію тощо). У сучасних версіях головна команда —
magick;convertЗазвичай воно існує як символічне посилання для забезпечення сумісності. - могріфікувати: подібний до
convertале розроблений спеціально для пакетна обробка та перезапис оригінальних файлів якщо ви не скажете йому інше. - ідентифікувати: відображає інформацію про зображення (формат, розміри, глибину кольору тощо).
Щоб дістати короткі факти З певного зображення, наприклад, логотипу в XCF, ви можете використовувати:
magick identify logo.xcf
Якщо ви хочете отримати набагато детальніший звіт, додайте -вербозний І у вас будуть розбиті всі важливі метадані. Це корисно для того, щоб переконатися, що Процес перетворення зберігає або змінює те, що ви хочете.
Зміна формату та розміру окремих зображень

Найпростіше завдання — конвертувати з одного формату в іншийНаприклад, з JPEG у PNG:
magick convert fotoorigen.jpg fotoresultado.png
ImageMagick визначає формат виводу на основі остаточне розширення файлутож якщо ви змінитеся .jpg по .png, .webp або як завгодно, воно генерується безпосередньо в цьому форматі.
magick convert fotoorigen.jpg -resize 800x600 -quality 90 fotoresultado.jpg
У цьому прикладі зображення налаштовується на 800 × 600 пікселів і це встановлено Якість JPEG 90%Це швидкий спосіб знизити вагу без помітної втрати у переважній більшості випадків в Інтернеті.
Ви також можете використовувати лише ширина або лише висота (наприклад, -resize 1200x o -resize x800), щоб ImageMagick автоматично налаштував інший вимір, зберігаючи пропорції. Якщо ви використовуєте знак ! (наприклад, -resize 800x600!) забезпечує саме ці розміри, хоча зображення буде спотворене, якщо співвідношення сторін не збігатиметься.
У разі роботи з Файли GIMP XCF з кількома шарамиЯкщо ви конвертуєте безпосередньо в PNG або JPG, для кожного шару буде створено окремий файл. Щоб уникнути цього та отримати одне, зведене зображення, додайте опцію -flatten перед вихідним файлом.
Mogrify проти Convert: коли використовувати кожен з них
Дуже важливою відмінністю при роботі в пакетах є розуміння що саме робить кожна команда:
- конвертувати (або магічно конвертувати) Він зчитує вхідне зображення, застосовує перетворення та генерує новий вихідний файлОригінальне зображення залишається недоторканим.
- могріфікувати Відкрийте файл, застосуйте зміни, і якщо ви не використовуєте
-formato-path, перезаписує оригінальний файлЦе економить місце на диску, але зміни незворотні, якщо у вас немає резервної копії.
Типові дзвінки би:
convert imagenoriginal.png -parametro valor imagendestino.png
mogrify -parametro valor imagenoriginal.png
Наприклад, якщо ви запустите:
convert torres.jpg -negate torresnegadas.jpg
у тебе все ще буде два різні файлиоригінал і негатив. Однак, якщо ви це зробите:
mogrify -negate torres.jpg
файл Файл torres.jpg було змінено І немає резервної копії, якщо ви її не створили заздалегідь. Це ідеально підходить для очищення великої кількості зображень, коли ви турбуєтеся про місце, але вам слід бути обережним.
В обох випадках Порядок аргументів має значення. З convert Спочатку ви вказуєте вихідне зображення, потім параметри і, нарешті, місце призначення. Якщо ви переплутаєте джерело та місце призначення, інструмент не вийде з ладу, оскільки не зможе знайти файл, який має прочитати. mogrify Параметри розташовуються перед іменами файлів; якщо спочатку вказати файл, а потім параметри, нічого не буде застосовано.
Створення полотен та текстів з нуля
Ще одна ключова відмінність полягає в тому, що Тільки Convert може створювати зображення з нуляЗ модифікатором xc: Ви можете створити полотно суцільного кольору:
convert -size 500x250 xc:red imagenroja.jpg
Якщо ви спробуєте зробити щось подібне з mogrify Без попереднього файлу це не вдасться, оскільки Немає чого змінювати.Те саме стосується створення підписів або зображень безпосередньо з текстом:
convert -size 500x250 -gravity Center -background blue -font FreeMono-Bold label:"Linux Center" cartela_Linux_Center.jpg
Ця команда створює синій фон, вирівнює текст по центру, застосовує шрифт і генерує нове зображення. mogrify вам знадобиться починаючи з існуючого файлуЗ повітря його не вигадаєш.
Пакетна обробка за допомогою mogrify та скриптів оболонки
Коли у нас є сотні фотографій у папці, і ми хочемо застосувати те саме перетворення автоматичноВ гру вступають скрипти оболонки та mogrify.
#!/bin/bash
mkdir -p convertidas
for img in *.jpeg; do
convert "$img" -resize 800x600 -quality 90 "convertidas/$img"
done
Цей міні-сценарій турів усі зображення з розширенням .jpeg У поточній папці застосуйте зміну розміру та залиште результати конвертований/Ви можете адаптувати його, щоб змінити формат (наприклад, щоб вивід був .png o .webp), додайте водяні знаки або будь-який інший фільтр, який підтримує ImageMagick.
Коли у вас є багато зображень в одному форматі, і ви хочете перезаписати їх на сайті економія місця, mogrify Він світить особливо яскраво. Типовим прикладом конвертації з XCF у PNG, зміни розміру та відправки результату в іншу папку буде:
mogrify -resize 128x128 -format png -path "$HOME/imgs_convertidas" $HOME/imgs_originales/*.xcf
mogrify для масового перетворення та стандартних параметрів
Замовлення могріфікувати Це дозволяє об'єднати багато трансформацій одночасно. Досить повний приклад конвертації всіх PDF-файлів у папці в JPG, зміни їх розміру, налаштування якості та обертання буде таким:
mogrify -format jpg -density 300 -quality 80 -resize 1280x1024 -rotate -90 *.pdf
Деякі з найбільш часто використовуваних параметрів У контексті оптимізації та конверсії це:
- -формат: формат вихідного зображення (jpg, png, webp тощо).
- - щільність: роздільна здатність у dpi (150, 300, 600…), корисна під час конвертації PDF або інших векторних форматів у растрові зображення.
- ЯкостіЯкість стиснення для форматів із втратами (особливо JPEG та WebP). 80 зазвичай є хорошим балансом для вебу.
- -змінювати: кінцеві розміри, з можливістю вказати лише ширину, лише висоту або обидві.
- - обертати: обертання в градусах (додатне за годинниковою стрілкою, від'ємне проти годинникової стрілки).
Майте на увазі, що в деяких дистрибутивах (таких як Ubuntu/Debian з ImageMagick 7) вони були встановлені політики безпеки, які за замовчуванням вимикають певні конфіденційні формати, наприклад, PDF. Якщо під час використання mogrify Ви отримуєте помилку дозволів для PDF-файлів; ви можете редагувати файл. /etc/ImageMagick-7/policy.xml з правами адміністратора та змініть рядок:
Якщо під час використання mogrify про PDF-файли, які ви бачите помилка дозволів, ви можете редагувати файл /etc/ImageMagick-7/policy.xml з правами адміністратора та змініть рядок:
<policy domain="coder" rights="none" pattern="PDF" />
для чогось на зразок:
<policy domain="coder" rights="read | write" pattern="PDF" />
послаблення безпеки Вам слід оцінити, чи це того варте для вас, чи ні; з точки зору пуристів, це відкриває невелику прогалину, але в багатьох контрольованих середовищах це прийнятно.
Конвертація та оптимізація у сучасні формати (WebP, оптимізований JPEG)
Окрім ImageMagick, існують спеціальні інструменти, які дуже корисні для оптимізуйте розмір без втрати якостіособливо коли ваша мета — інтернет.
Конвертація в WebP за допомогою cwebp та img2webp
WebP Це сучасний формат, створений Google, який пропонує стиснення перевершує JPEG та PNG У багатьох випадках, як зі збитками, так і без них. Прибуток cwebp Використовується для конвертації існуючих зображень (JPEG, PNG…) у WebP з командного рядка:
- Конвертувати JPEG у WebP з якістю 80:
cwebp -q 80 input.jpg -o output.webp - Конвертувати PNG у WebP, зберігаючи прозорість:
cwebp -q 80 input.png -o output.webp
Для пакетної обробки (наприклад, усіх зображень, що починаються з сервісний відсік), ви можете використовувати невеликий цикл у Shell:
for file in servbay*.{jpg,png}; do
cwebp -q 45 "$file" -o "${file%.*}.webp"
done
синтаксису ${файл%.*} Це розширення параметрів Shell, яке видаляє оригінальне розширення, а потім додає .webp.
Якщо те, що ти хочеш, так і є створити анімований WebP (щось схоже на анімований GIF, але ефективніше), ви можете взяти з img2webp:
img2webp -loop 0 -d 100 frame1.png frame2.png frame3.png -o output.webp
У цьому прикладі поєднується кілька зображень в один анімований файл з Затримка 100 мс між кадрами та нескінченним циклом.
Безвтратна оптимізація JPEG за допомогою jpegtran, djpeg та cjpeg
Для JPEG існує ряд класичних утиліт, які дуже корисні, коли ви хочете зробити оптимізація без втрат або дуже точне керування:
- jpegtranВін обертає, перевертає, змінює порядок та оптимізує JPEG-файли без повторного стиснення (операції без втрат). Він також дозволяє створювати прогресивні JPEG-файли та видаляти непотрібні метадані.
- djpeg: декодує JPEG у нестиснені проміжні формати (такі як PPM), що корисно в низькорівневих робочих процесах.
- cjpeg: виконує протилежний процес, стискаючи необроблені зображення до JPEG з різними параметрами якості.
Типове використання jpegtran для оптимізації JPEG-файлів без втрат та зробити їх прогресивними було б:
jpegtran -optimize -progressive -copy none input.jpg > output.jpg
Тут ми видаляємо метадані (EXIF, коментарі тощо), покращуємо внутрішню організацію та конвертуємо у прогресивний код, який зазвичай забезпечують краще сприйняття навантаження в Інтернеті, коли зображення відображається «шарами» деталей.
Пакетна обробка зображень за допомогою графічного інтерфейсу: Converseen
Якщо термінал вам не підходить, але ви все ще хочете скористатися можливостями ImageMagick, існують такі інструменти, як Контрольний, який пропонує багатоплатформний графічний інтерфейс (Windows та Linux) для керування масовими конвертаціями.
Converseen внутрішньо базується на бібліотеці ImageMagick та дозволяє одним махом:
- Перетворення між форматами (JPG, PNG, TIF та багато інших, таких як DPX, EXR, GIF, SVG, PhotoCD, PostScript…).
- Зміна розміру, поворот та відображення пакетні зображення.
- Стиснення зображень для вебу або для документів, контроль якості та розміру.
- Перейменування груп файлів з префіксами, суфіксами або прогресивними числами.
- Конвертувати повний PDF-файл на багато зображеньпо одному на сторінку.
Встановлюється легко з репозиторіїв багатьох дистрибутивів (converseenі в openSUSE converseen-lang (для мови) або завантаживши виконуваний/портативний файл версії у Windows.
Інтерфейс Converseen організований у кілька панелей: панель дій (попередній перегляд, розміри, обертання та параметри виводу), центральну область, де ви бачите файли для обробки, та нижня панель де ви обираєте вихідний формат, певні налаштування (стиснення JPG/PNG, колір прозорого фону тощо).
Серед його найпрактичніших функцій є такі, що масштабний та відомийНаприклад, ви можете вибрати «Масштабувати зображення», зберегти співвідношення сторін, встановити ширину або відсоток зменшення та вибрати, чи зберегти оригінальний формат, чи перетворити його на інший. Для перейменування у вас є кілька варіантів. Префікс / Суфікс (вставте рядки навколо оригінальної назви) та Прогресивне число (додати послідовну нумерацію).
Це також дозволяє поворот зображень на 90°, 180° або відображати їх горизонтально/вертикально, і він має спеціальний робочий процес для перетворення PDF-файлу на набір зображень: ви імпортуєте PDF-файл, вибираєте потрібні сторінки, обираєте розміри, формат, поступове перейменування та, за необхідності, Ви замінюєте прозорий фон певним кольором (наприклад, білий).
Типові практичні випадки з ImageMagick
З усім вищезазначеним ви тепер можете налаштувати широкий спектр робочих процесів. Деякі поширені приклади Пакетна оптимізація та конвертація за допомогою ImageMagick би:
- Масова зміна розміру Для блогу або галереї: використовуйте bash-скрипт, який перебирає всі великі фотографії, зменшує їх до максимальної ширини (наприклад, 1200 пікселів) та зберігає їх у папці "web".
- Завантаження зображень з URL-адреси, масштабування та оптимізація в одній команді:
convert https://blogandweb.com/INPUT_IMAGE.jpg -resize 1200x -quality 60 -strip OUTPUT_IMAGE.jpg - Додавання логотипів або водяних знаків автоматично застосовувати всі зображення в кампанії, використовуючи комбінації
-gravity,-geometryy-compositeв межах циклу. - видалити межі з набору зображень з
-shave 10x10, ідеально підходить для відсканованих фотографій із небажаними рамками. - Об'єднайте кілька зображень у один монтаж горизонтальний з
+append, корисно для порівнянь "до/після" або для створення смужок кадрів. - Створення анімованих GIF-файлів з послідовності JPG/PNG з
-delayy-loop.
Весь цей потенціал можна організувати з інших мов, таких як PHP, Python або Node.js виклик команд за допомогою exec(), subprocess o child_processЦе робить інтеграцію оптимізації зображень у робочий процес завантаження або обробку на сервері досить простою.
Майстер ІміджМагік, mogrify та додаткові інструменти, такі як cwebp або jpegtran Це дозволяє вам впевнено працювати з величезними бібліотеками зображень, скорочувати час завантаження веб-сайтів, економити місце на диску та автоматизувати завдання, які неможливо виконати вручну. Як тільки ви звикнете писати три-чотири добре продумані команди або короткий скрипт, зміна розміру, формату та якості тисяч фотографій перестане бути рутиною та стане природною частиною вашого робочого процесу. Поділіться цією інформацією, і більше користувачів дізнаються про інструмент.