Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
18th
Фев
gimp скрипт Script-Fu для уменьшения размера, сжатия изображений в linux в командной строке через терминал на Ubuntu
Posted by obzor under Linux
Процесс преобразования в Ubuntu
Чтобы сохранить Script-Fu и в последсвии запустить для пакетной обработки изображений
В домашней папке нашёл папку Gimp — .gimp-2.8
В этой папке нашёл и перешёл в папку scripts
Там создал файл
batch-resize.scm
В котором создал и сохранил скрипт
(define (batch-resize pattern)
(let*
((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* (
(filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(drawable (car (gimp-image-active-drawable image)))
(cur-width (car (gimp-image-width image)))
(cur-height (car (gimp-image-height image)))
(width (* 0.25 cur-width))
(height (* 0.25 cur-height))
)
(gimp-message filename)
(gimp-image-scale-full image width height INTERPOLATION-CUBIC)
(let
((nfilename (string-append "out/" filename)))
(gimp-file-save RUN-NONINTERACTIVE image drawable nfilename nfilename)
)
(gimp-image-delete image)
)
(set! filelist (cdr filelist))
)
)
)
В статьях по работе со скриптами рекомендуют обновлять подгружённые скрипты, потому запустил Gimp
Там перешёл по навигации вкладки Фильтры — Script-Fu — Обновить сценарии
В любом случае, этой операцией проверил на работоспособность GIMP, что он есть и он запускается )
Закрыл Gimp
Для работы с изображениями, в домашней папке создал папку imageresize
В папке imageresize создал папку process
поместил туда изображения для обработки — уменьшения размера в 4 раза в длину и ширину, для сжатия с меньшим занимаемым местом на хостинге, расчётное преобразование в 10-20 раз, картинка в 8 мегабайт пережимается до 400 килобайт, в 5 мегабайт до 300 кб.
Gimp не только уменьшает размер за счёт уменьшения, но и оптимизирует JPG сжатие, по своим алгоритмам.
Создал в папке с изображениями папку out, она упоминается в скрипте — «out/» нужно обратить на это внимание
Работать со скриптом буду через командную строку, в Ubuntu она называется Терминал
Выполняю команды перехода в каталог с изображениями
cd imageresize
cd process
dir
Теперь вы можете убедиться что работаете с теми файлами, что надо
Отмечу, что в папке должны быть только изображения, так как для обработки будет передаваться, маска «*.*»
Запустил команду пакетной обработки изображений через скрипт, сохранённый в скриптах Gimp
gimp -i -b '(batch-resize "*.*")' -b '(gimp-quit 0)'
Следует обратить внимание на то что процесс довольно долгий, в командной строке множетсво отчётов по ошибкам, но все изображения при этом конвертируются.
Ошибки для примера, на которые я не обращаю внимания
===================
While parsing XMP metadata:
Ошибка в строке 42 символ 1: Окончание тэга <exif:Flash> не допустимо в данном контексте
======================
script-fu-Предупреждение:
Metadata parasite seems to be corrupt
===================
While parsing XMP metadata:
Ошибка: пакет XMP не найден
===============
Сейчас произвёл обработку 1*088 объектов, всего 20,4 МБ стало, а было 1*088 объектов, всего 179,1 МБ
Следовательно пережаты все изображения с коэффициентом сжатия 20,4÷179,1 = 0,113902848
Что-то около в 9 раз
Далее удалил исходные изображения, оставив в папке out только, чтобы не пережать второй раз.
Отмечу, что это папка process, а сами исходники лежат в архиве в другом месте, чтобы была возможность, по необходимости, вернуться к исходным файлам изображений.
Обработка следующей партии
Скопировал изображения в папку process, создал внутри папку out, запустил команду обработки, пронаблюдал за листом ошибок и предупреждений, в конце получил сообщение
batch command executed successfully
сравнил эффективность сжатия —
2*128 объектов, всего 63,8 МБ, а было 2*128 объектов, всего 619,0 МБ
Сжатие чуть меньше чем в 10 раз.
В конце удалил обработанные файлы.
Обратить внимание, что если в папке окажется не файл изображения, процесс не будет закончен и не все файлы конвертируются, потому и нужно проверять сколько было и сколько стало файлов.
Ошибка у меня вылетает такая
Изображение JPEG-Предупреждение: Not a JPEG file: starts with 0x52 0x49
batch command experienced an execution error:
Error: (<unknown> : 164173557) Procedure execution of gimp-file-load failed
Причём имя ошибочного файла отработчик ошибок почему-то не передаёт )
Чтобы ошибка не повторялась, удалил затесавшиеся файлы не картинки.
Третий запуск
Стало 240 объектов, всего 8,4 МБ, было 240 объектов, всего 95,2 МБ
Сжатие больше чем в 11 раз, тут были самые большие файлы по 9MB весом, в предыдущих прогонах были 5MB фотографии или меньше.
Случайные статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)