Воспользуемся встроенной утилитой `find` и командами из пакета `imagemagick`, который есть почти во всех репозиториях современных дистрибутивов и может быть установлен стандартным пакетным менеджером.

Есть несколько способов сжать изображение:
1. Сконвертировать в формат, алгоритм которого предоставялет лучшую оптимизацию. Например, для обычных фото чаще всего используют JPEG, так как объём файла в этом формате намного меньше, чем фото в PNG. Современный WEBP, разработанный Google, не так популярен и чаще используется на веб-сайтах, однако, тоже позволяет уменьшить размер исходного файла, почти не хуже JPEG-а. Важно понимать, что PNG сохраняет файл без потерь (по-английски такие форматы называются Lossless), то есть ни один пиксель из фото не будет удалён, тогда как JPEG и WEBP для оптимизации объёма файла могут это сделать. Также не рекомендуется конвертировать картинку в JPEG/WEBP/GIF, если она содержит элементы компьютерного дизайна; для этого лучше подходит SVG.
2. Уменьшить разрешение картинки. В таком случае будет потеряно качество, но можно найти компромисс между объёмом файла и качеством фотографии.

Первый способ предлагаю реализовать в терминале так:
```bash
find . -exec bash -c "convert {} \$(echo \"{}\" | sed s/\.[A-Za-z0-9]+$/.jpg/)" \;
```
Команда ищет все файлы в текущем каталоге и к для каждого вызывает утилиту конвертации из imagemagick — `convert`, передавая вторым аргументом изменённое имя файла (через `sed` заменятся расширение на .jpg, часть между двумя слэшами — `/.jpg/` — можете заменить на необходимое расширение, например .webp).

Примечание 1: если в каталоге есть не только фото, необходимо указать, какие файлы нужно конвертировать:
```bash
find . -name 'glob' -exec bash -c convert {} \$(echo {} | sed s/\.[A-Za-z0-9]+$/.jpg/) \;
```
где вместо glob надо подставить маску, то есть выражение для поиска файлов, например, `*.png` будет означать "найти все файлы с расширением png" (символ звёздочки заменяет любую последовательность символов, то есть само выражение означает "файлы, с любыми символами в начале и с .png в конце имени).

Примечание 2: в Alpine Linux нет программы bash, в команде её нужно заменить на sh.

Второй способ оптимизации фото:
```bash
find . -exec magick {} -resize 1920x1080\> {} \;
```
Благодаря удобному синтаксису команд imagemagick, эта команда получилась очень компактной.
В качестве разрешения фото выбрано разрешение монитора (1920x1080). При этом соотношение сторон будет сохранено, то есть фото не растянется до указанного размера. Символ `>` (экранирован с помощью бэкслеша, так как является специальный символом в командной оболочке) означает, что размер будет изменён только у тех фотографий, которые больше этого разрешения.
Все примечания выше актуальны и в этом методе.
ลองใช้ยูทิลิตี้ `find` ในตัวและคำสั่งจากแพ็คเกจ 'imagemagick` ซึ่งมีอยู่ในที่เก็บเกือบทั้งหมดของการกระจายสมัยใหม่ และสามารถติดตั้งได้ด้วยตัวจัดการแพ็คเกจมาตรฐาน มีหลายวิธีในการบีบอัดรูปภาพ: 1. แปลงเป็นรูปแบบที่อัลกอริธึมให้การปรับให้เหมาะสมที่ดีกว่า ตัวอย่างเช่น JPEG มักใช้กับรูปภาพปกติ เนื่องจากขนาดไฟล์ในรูปแบบนี้จะเล็กกว่ารูปภาพ PNG มาก WEBP สมัยใหม่ที่พัฒนาโดย Google ไม่ได้รับความนิยมมากนักและมักใช้บนเว็บไซต์บ่อยกว่า แต่ก็ช่วยให้คุณลดขนาดไฟล์ต้นฉบับได้ซึ่งแทบจะไม่แย่ไปกว่า JPEG เลย สิ่งสำคัญคือต้องเข้าใจว่า PNG บันทึกไฟล์โดยไม่สูญเสีย (ในภาษาอังกฤษ รูปแบบดังกล่าวเรียกว่า Lossless) นั่นคือไม่ใช่พิกเซลเดียวจากภาพถ่ายจะถูกลบ ในขณะที่ JPEG และ WEBP สามารถทำได้เพื่อปรับขนาดไฟล์ให้เหมาะสมที่สุด ไม่แนะนำให้แปลงรูปภาพเป็น JPEG/WEBP/GIF หากมีองค์ประกอบการออกแบบด้วยคอมพิวเตอร์ SVG ดีกว่าสำหรับสิ่งนี้ 2. ลดความละเอียดของภาพ ในกรณีนี้ คุณภาพจะหายไป แต่อาจมีการประนีประนอมระหว่างขนาดไฟล์และคุณภาพของภาพถ่าย ฉันขอแนะนำให้ใช้วิธีแรกในเทอร์มินัลเช่นนี้: ``` bash find -exec bash -c "แปลง {} \$(echo \"{}\" | sed s/\.[A-Za-z0-9]+$/.jpg/)" \; ``` คำสั่งค้นหาไฟล์ทั้งหมดในไดเร็กทอรีปัจจุบัน และสำหรับการเรียกแต่ละครั้งยูทิลิตี้การแปลงจาก imagemagick - `convert` โดยส่งชื่อไฟล์ที่เปลี่ยนแปลงเป็นอาร์กิวเมนต์ที่สอง (ผ่าน `sed` ส่วนขยายจะถูกแทนที่ด้วย .jpg, ส่วนระหว่างเครื่องหมายทับสองตัว - `/.jpg /` - คุณสามารถแทนที่ด้วยส่วนขยายที่จำเป็น เช่น .webp) หมายเหตุ 1: หากไดเร็กทอรีมีมากกว่ารูปถ่าย คุณต้องระบุไฟล์ที่ต้องการแปลง: ```bash find -name 'glob' -exec bash -c แปลง {} \$(echo {} | sed s/\.[A-Za-z0-9]+$/.jpg/) \; ``` โดยที่แทนที่จะใช้ glob คุณต้องแทนที่มาสก์ นั่นคือ สำนวนสำหรับการค้นหาไฟล์ เช่น `*.png` จะหมายถึง "ค้นหาไฟล์ทั้งหมดที่มีนามสกุล png" (เครื่องหมายดอกจันจะแทนที่ลำดับใดๆ ของ อักขระนั่นคือนิพจน์นั้นหมายถึง "ไฟล์ที่มีสัญลักษณ์ใด ๆ ที่จุดเริ่มต้นและมี .png ที่ท้ายชื่อ) หมายเหตุ 2: Alpine Linux ไม่มีโปรแกรม bash จำเป็นต้องแทนที่ในคำสั่ง ด้วย sh วิธีที่สองในการปรับภาพถ่ายให้เหมาะสม: ```bash find . -exec magick {} -resize 1920x1080\> {} \; ``` ต้องขอบคุณไวยากรณ์ที่สะดวกของคำสั่ง imagemagick คำสั่งนี้จึงมีขนาดกะทัดรัดมาก ความละเอียดของจอภาพ (1920x1080) ถูกเลือกเป็นความละเอียดของภาพถ่าย ในกรณีนี้ อัตราส่วนภาพจะยังคงอยู่ กล่าวคือ ภาพถ่ายจะไม่ถูกขยายเป็นขนาดที่ระบุ สัญลักษณ์ `>` (ยกเว้นด้วยแบ็กสแลชเนื่องจากเป็น a อักขระพิเศษในเชลล์) หมายความว่าเฉพาะภาพถ่ายที่มีขนาดใหญ่กว่าความละเอียดนี้เท่านั้นที่จะถูกปรับขนาด หมายเหตุทั้งหมดข้างต้นใช้กับวิธีนี้เช่นกัน
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence