Як можна стискати зображення?


25

У мене є 5000 зображень, які мені потрібно стиснути (щоб відобразити на своєму веб-сайті).

Я новачок у Ubuntu. То що мені робити?



@MostafaAhangarha: Не дублюється. Прочитайте мою відповідь askubuntu.com/a/781588/9598 та перегляньте свій голос, щоб не закрити це питання. Це добре. Дякую!
Geppettvs D'Constanzo

Відповіді:


21

Я використовую Trimage дуже просто у використанні.

додайте лише картинку, а для встановлення вона стисне:

sudo apt-get install trimage

введіть тут опис зображення


2
Я не бачу жодних налаштувань, за допомогою яких я можу визначити, наскільки стиснене мені б хотілося, розмір файлу тощо
Rico

46

Слово "стиснення", здається, неправильно трактується в цьому питанні, але воно все-таки діє, залежно від контексту, який ви хочете бачити.

Декорації

Давайте поглянемо, що веб-дизайнерам, веб-розробникам та / або веб-майстрам потрібно "стиснути" наші файли зображень, щоб зробити їх досить "легкими" для швидкого завантаження на наш хостинг, якщо ми працюємо безпосередньо в реальному виробничому середовищі. Що не вплине, якщо ми працювали в місцевому виробничому середовищі для тестування.

Багато відповідей, схоже, стосуються інших речей, здебільшого спричинених через те, що, мабуть, вони не стикалися з такою природою. Ось чому я починаю пояснювати це.

Так. Давайте розберемося, що відповідь потрібно вирішити:

  1. Малюнок ОБОВ'ЯЗКОВО має бути легким
  2. Малюнок ПОВИНЕН "стиснути", щоб втратити розмір файлу, але не "змінити", як вказав інший користувач, який вказав на дублювання цього питання JPG пакетного стиснення та перейменування (знайти -exec, xargs, piping?)
  3. Знімки повинні бути стислі в пакетному режимі, бажано через GUI.

Легкий малюнок

Давайте спочатку розберемося, якою має бути «легка картина».

Картинки високої чіткості з роздільною здатністю понад 1024 пікселів можуть мати великий розмір файлу. Я навожу приклад на цьому скріншоті:

введіть тут опис зображення

введіть тут опис зображення

У вікні властивостей файлу ми можемо побачити, що це 9,5 Мб файл, який затягне багато часу для завантаження і затримає багато для того, щоб відобразити на екрані при публікації на веб-сайті.

Тим не менш, розмір зображення та роздільна здатність сітки дійсно корисні для друку високої чіткості. Отож, це інша природа, яку я не висвітлюю в цьому поясненні.

Отже, як я можу використовувати це зображення на веб-сайті, не чекаючи років для завантаження та очікування деяких інших років, щоб показати його на своєму веб-сайті?

Файл слід стиснути.

І коли ми говоримо про "стиснення", нам явно потрібно змінити його якість, щоб зробити його корисним у випадку, з яким ми стикаємося.

Отже, кинемо наступне в термінал:

convert seminario-tabloide.png test.jpg

Це перетворить формат PNG високої чіткості у "стислий" формат JPG, який сам по собі є меншим файлом! Він переходить від 9,5 Мб до 2,4 Мб.

введіть тут опис зображення

І все-таки великий?

Але 2,4 Мб все ж великий розмір файлу. Давайте тепер пограємо з іншими командами для перетворення ImageMagick для створення менших розмірів файлів:

convert test.jpg -quality 50% test-50p.jpg

Це те, що нам потрібно зробити, щоб «стиснути» зображення. Це дозволить знизити якість зображення на 50% та забезпечити розмір файлів у розмірі 938,4 Кб <=== (Примітка: KILOBYTES, навіть не мегабайт).

Ми можемо піти далі і створити менший розмір файлу, регулюючи відсоток у тій же команді за допомогою:

convert test.jpg -quality 30% test-30p.jpg

Майте на увазі, що в цьому прикладі ми знижуємо якість файлу, а не розміри зображення. Це призведе до стисненого файлу, на який візуально не впливає, коли він відображається на екрані, але ви побачите артефакти при друку великого розміру паперу (більше, ніж літери).

Змінення розміру + стиснення = супер круто!

Тепер. Ми можемо зробити іншу справу. Кілька речей: насправді ми можемо спочатку змінити розмір зображень і застосувати стиснення після цього, що призведе до меншого розміру файлу, ніж оригінал, і створить корисне зображення для візуалізації на екрані, не дуже добре для друку, але, здається, ми потрібно відображати його на екрані, а не на друкованому банері, правда?

Тож давайте зробимо це:

convert seminario-tabloide.png -resize 1024x test-1024x.jpg

За допомогою цієї інструкції ми просимо змінити розмір зображення до ширини 1024 пікселів на будь-яку кількість пікселів, необхідну для того, щоб не втратити співвідношення сторін.

А тепер ... здогадайтесь, що?

Розмір файлу зменшився з 9,5 Мб до ... (музика, що звучить з конгресами, будь ласка) 433,7 KILOBYTES

Якщо ми хочемо максимально стиснути такий максимально стислий файл, як цей, ми зіткнемося з деякими накладними даними, вставленими у файл, і це призведе до більшого розміру файлу. Тому я не пропоную вам спробувати, але якщо ви очікуєте від мене прикладу, добре ... Ось ми підемо!

convert test-1024x.jpg -quality 50% test-1024x-50p.jpg

І ми перейшли від 433,7 Кб до 176,2 Кб в одній команді. Цей приклад був успішним, проте не сподівайтеся, що будь-які вправи призводять до менших розмірів файлів. Але ви можете розважитися, виконуючи подібні вправи.

Пакетний процес

Ой! Але я майже забуваю одну з потреб: застосовувати цей процес до безлічі знімків легко.

Для такої речі ми можемо це зробити двома процесами.

Термінал

Це швидше і простіше. Тож скажімо терміналу, що нам потрібно виконати ту саму інструкцію у всіх файлах каталогу, після чого я поясню іншу інструкцію.

Перетворити все в 1024 пікселів (ви можете використовувати будь-яку кількість пікселів)

for i in *; do convert $i -resize 1024x $i-1024x.jpg; done;

Тут ми просимо команду виконати однакову інструкцію для всіх файлів у каталозі, застосувати перетворення та видалити копію з іншим іменем, щоб зробити її легким у виборі.

Зменшіть якість на відсоток (використовуйте будь-який бажаний відсоток) для всіх зображень у каталозі:

for i in *-1024x.jpg; do convert $i -quality 50% $i-50p.jpg; done;

Тут ми просимо зменшити розмір зображень, щоб зменшити розмір файлів.

Ви можете грати з цими командами і бачити результати. Через пару годин веселощів ви станете експертом.

Наутілус Сценарій

20 квітня 2015 року я зіткнувся з такою ситуацією, як початкове запитання, тому мені довелося провести кілька досліджень і попросити про допомогу. Ось чому зараз я знаю багато цього. Не думай, що я боровся з цими знаннями, людино.

Якщо ви не звикли до терміналів і / або хочете використовувати графічний інтерфейс, щоб просто вибрати групи файлів і застосувати перетворення, ви можете створити свій власний сценарій дій Nautilus, щоб просто клацнути правою кнопкою миші групу файлів і вибрати опція з контекстного меню.

Щоб дізнатися, як це зробити, будь ласка, прочитайте тут питання, відповідь та коментарі: Як створити пакетну обробку JPG-зображень, щоб змінити її якість за допомогою Nautilus-Actions?

Удачі!


1
Це відповідь "навчи мене ловити рибу". convertНавички командного рядка ImageMagick прекрасні.
Charney Kaye

Солідно! Я використовував текстовий редактор Sublime Text в мульти-курсорному режимі, щоб швидко змінити купу команд одразу для "пакетного" стиснення купу фотографій. Я просто використав convert photo.jpg -quality 70% photo_compressed.jpgформат команд, і він чудово працював! Навіть встановлення стиснення лише до 70% від оригінальної якості зменшило розмір фотографії до ~ 37% від оригіналу, оскільки ефект збільшується на осі x та y.
Габріель Степлес

Фантастичне пояснення так часто неправильно зрозумілих понять. Для повноти дозвольте додати, що для пакетної обробки ви також можете використовувати ImageMagick mogrify, а не конвертувати, в якому я створюю папку для зберігання результатів, а потім просто обробляю в ту папку, яка також зберігає впорядкованість. Наприкладmogrify -resize 1600 -path dir_name -format JPG -quality 90 *.tif
Денніс

0

Якщо ви посилаєтесь на зображення jpeg, стиснення фактично неможливо. Оскільки jpeg за визначенням - це стислий формат файлу (усі шуми та непотрібні пікселі вже видалені). Ви можете застебнути їх добре, але загальний розмір залишиться приблизно однаковим. Єдиний розширений алгоритм стиснення, який я знаю для jpegs, - це zipx. Але zipx є власником Winzip і забезпечує макс. зменшення розміру на 30% (в режимі архіву zipx).

Щоб відобразити ваші зображення в Інтернеті, спершу слід змінити їх розмір (не більше 1 Мб на кожен) та необов'язково перетворити їх у формат файлу png. PNG (= портативна мережева графіка) спеціально оптимізована для швидшого веб-передачі та швидшого відображення. Просунуті користувачі можуть навіть перетворити ці зображення у формат webp (формат Google для зображень, алгоритм найшвидшого завантаження).

Ви можете групово конвертувати зображення за допомогою XnConvert, а потім пакетно змінювати розмір своїх зображень за допомогою XnView. Завантажте пакет дебюту звідси: http://www.xnview.com/de/xnviewmp/#downloads , а потім клацніть правою кнопкою миші та відкрийте його за допомогою програмного забезпечення Gnome.

Якщо вам не важлива швидкість завантаження мережі, але ви дбаєте про якість, вам слід залишати свої зображення недоторканими та створювати для них цифрову бібліотеку. Можливо, завантажте їх на загальнодоступний сервер (Yahoo, Google тощо).


3
Ви можете згадати різні варіанти стиснення / якості jpeg; цілком можливо зменшити розмір файлу jpeg зображення, збільшивши його стиснення (і, отже, зменшивши його якість).
Нік Вайнберг

1
Моє розуміння стиснення означає усунення непотрібних пікселів, зберігаючи однакову якість. Зниження якості - це не стиснення, а лише зменшення чи відбір проб. Стиснення без втрат можливе за допомогою zipx-формату, який чудово справляється із фотографіями, що часто знімаються. Створюється якась накладена / завищена купа схожих фотографій, на яких всі подвійні пікселі вирівнюються на окремому шарі, щось подібне до .css-файлу на веб-сторінці. Повторні пікселі визначаються як окрема сутність в архіві.
ipse lute
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.