Яка різниця між операторами sample / resample / scale / resize / adaptive-resize / thumbnail в ImageMagick convert?


84

Я знайшов кілька способів змінити роздільну здатність зображення за допомогою convert:

-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail

Яка різниця між ними?

Якщо мені потрібно зробити мініатюру великого зображення різного розміру з фіксованим співвідношенням сторін (потрібне обрізання) - який мій найкращий вибір?



Для ще більшої інформації див imagemagick.org/Usage/filter і imagemagick.org/Usage/filter/nicolas
fmw42

Відповіді:


136

змінити розмір

-resize 400x300+20+30(як -scaleі -sampleприклади нижче) перетворює вхід у вихідне зображення, яке має розміри пікселів 400x300. Він також зміщує вихід на 20 пікселів праворуч і на 30 пікселів унизу. Крім того, є ще кілька відмінностей між -scale:

  • -resizeпідтримує додаткове налаштування -filter(яке має відбуватися в командному рядку перед використанням -resize!).

  • -filter визначає точний алгоритм, який використовуватиметься для кольорів доданих пікселів у разі збільшення, або для кольорів, що використовуються для решти пікселів, коли деякі їх сусіди видаляються у разі зменшення.

  • Щоб отримати список підтримуваних фільтрів, просто запустіть convert -list filter.

  • -filter point -resize 400x300створює точно такий же результат, як і -sample 400x300зараз, але працює все одно трохи повільніше.

  • Якщо не встановити поряд (раніше) -resize, перетворення буде тихо за замовчуванням -filter Lanczosповільніше, але яке створює набагато кращу якість (оскільки враховує кольори всіх оточуючих пікселів для будь-яких нещодавно доданих), ніж -filter pointвиробляє (яке використовує найближчий правило сусіда для визначення кольору щойно доданих пікселів).

зразок

-sample 400x300перетворює вхідне зображення у вихідне зображення, яке має розмір пікселів 400x300. Однак є кілька дуже важливих відмінностей між -resize:

  • -sampleне підтримує додаткове налаштування -filter; якщо встановлено в будь-якому випадку, то -filterпросто ігнорується.

  • Під час збільшення (оскільки розмір вхідного зображення може бути меншим ніж 400x300) пікселі копіюються в блоки.

  • При мініфікації (оскільки розмір вхідного зображення може бути більшим ніж 400x300) пікселі вибірковуються за допомогою дуже простого алгоритму: деякі рядки та стовпці просто пропускаються.

  • Аргумент геометрії для -sampleне підтримує жодної частини зміщення (на відміну від -resize, яка поважає директиви зміщення для виводу).

  • На виході ніколи не буде більше (різних) кольорів, ніж було на вхідному зображенні; він може мати менше кольорів.

  • Тому -sampleце дуже швидко (швидше, ніж -resize), але якість виводу гірше (як правило) гірша: ви можете легко отримати надзвичайні ефекти блокування та псевдонімування результату.

  • Важливою особливістю -sampleє те, що нове зображення не буде містити нових кольорів, хоча деякі кольори з вихідного зображення можуть зникнути.

перепробовувати

-resampleвикористовує в якості параметра бажану XxY роздільну здатність , а не геометріюXxY пікселів цільового зображення. Метою цього оператора є збереження винесене розмір зображення: Припустимо , що ваші заходи зображення 4 дюйма на 3 дюйми на пристрої , яке робить його на 300 DPI. Потім попросіть або змінити розмір зображення так, щоб воно (знову) становило 4 дюйма на 3 дюйма на пристрої 72 DPI.-resample 72-resample 72x72

  • Ця операція працює лише для таких зображень, які вже мають бажану роздільну здатність, збережену у своїх метаданих (не всі формати зображень підтримують концепцію роздільної здатності зображень - JPEG, PNG та TIFF).

  • Якщо вихідне зображення має формат, у якому відсутня внутрішня підтримка роздільної здатності зображення, то (передбачувана) вихідна роздільна здатність зображення повинна бути вказана через -densityкомандний рядок перед вказівкою -resampleроздільної здатності.

масштаб

-scale 400x300видає еквівалентний результат (але швидший, оскільки дозволяє уникнути всієї обробки фільтрів), як і використання -filter box -resize 400x300. Він також повністю ігнорує будь-які поточні -filterналаштування.

  • Під час мініфікації він змінює розмір зображення, просто замінюючи кольори пікселів, усереднюючи відповідні вхідні кольори пікселів разом.

  • При збільшенні він просто копіює відповідні вхідні пікселі для необхідних додаткових пікселів.

адаптивний розмір

-adaptive-resize 400x300не підтримує (або ігнорує, якщо встановлено) зміщену частину параметра геометрії, а також ігнорує -gravityпараметр, якщо він присутній.

  • Він використовує за замовчуванням залежну від даних триангуляцію при зміні розміру (якщо метод зміни розміру не замінено додатковим вказівкою -filter [something]).

ескіз

-thumbnailпрацює так само, як -resizeі з деякими відмінностями:

  • Він оптимізований для швидкості.

  • Він також видаляє будь-які вбудовані кольорові профілі, щоб зменшити розмір файлів мініатюр.


Наступна відповідь показує кілька (проілюстрованих!) Прикладів -resizeдирективи. Кожна ілюстрація показує різний результат, залежно від `` тонких деталей '' методу точного зміни розміру:


4
Дякую, це має набагато більше сенсу, ніж документація ImageMagick.
Paul Brannan,

Якби у вас були зразки зображень, це було б ще більш досконалим :-)
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

@KurtPfeifle: Перш за все, дякую за високоінформативну відповідь. Будь ласка, підкажіть будь-яку хорошу книгу чи PDF-файл із документацією для Imagemagick. Найкращий підхід, який я маю зараз, - це зішкребти всі сторінки Imagemagick, щоб скоротити час читання, але це багато інформації (яка, на мій погляд, не завжди досить описова). Будь-яка допомога високо цінується.
saurabheights

5

Як сказав Чіро Сантіллі 新疆 改造 中心 六四 事件 法轮功:

Якби у вас були зразки зображень, це було б ще досконаліше :-)

-змінювати

Google Play з -resize (8,0 кБ)

-вибірка

-вибірка (2,2 кБ)

-масштаб

-масштаб (7,0 кБ)

-адаптивний-розмір

введіть тут опис зображення (4,3 кБ)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.