Пакетное скругление картинок v0.1
Неожиданно тема пакетного скругления картинок оказалась близка не только мне. В комментариях накидали несколько предложений по улучшению программы.
Я постарался выполнить всё то, что смог добавить за вечер.
-
-quality=85 --radius=10 —background=#ffffff --mask=*.{j,J}{p,P}{g,G} --out-dir=out
GUI за вечер, конечно же, я не прикручу, а с сохранением EXIF есть сложности: на деле оказалось, что EXIF не то вырезается, он просто не сохраняется библиотекой GD, буду думать.
Скачать новую версию можно там же, где и предыдущую.
Комментарии 26
Бывает у них и расширение jpeg.
Как вариант
http://pel.sourceforge.net/
http://www.phpclasses.org/package/1042-PHP … riter.html
Комментарий для SiMM:
В чём сложность? --mask=*.{j,J}{p,P}{e,E,}{g,G}
Комментарий для SiMM:
Я смотрел. Они монструозны — сотни килобайт, я перед сном придумал как это сделать в несколько строк.
Комментарий для Евгения Степанищева:
Подумал, что описан набор возможных значений :) А что ж скобки не квадратные, да и запятая ни к чему — больше было бы похоже на PCRE :)
Комментарий для Евгения Степанищева:
Было бы любопытно взглянуть — полагаю, достаточно знания спецификации — тупо скопировать в выходной файл EXIF входного.
Комментарий для SiMM:
Потому что это не PCRE, а file patterns, принятые в Linux/UNIX.
Комментарий для SiMM:
После обработки jpegtran получаются два файла (jpegtran так работает), сейчас я первый (входной) удаляю, а второй (выходной) переношу на место первого.
А можно делать так — копировать чанками (в JPEG есть просто выделяемые секции), сразу после заголовка подселить APP0 и APP1 (ещё толком не читал, но кажется именно там сидит EXIF, эти секции нам даст функция getimagesize в PHP), собственный APPx пропустить, а потом просто докопировать остаток.
я
И пустой ключ, и
Если это
По идее, надо предусмотреть обработку jpeg, с именами, начинающимися с одного минуса =)
А так, хотелось бы иметь возможность использовать радиус ноль (например, когда я хочу только jpegtran -progressive, но с сохранением EXIF) и ключ --subdirs
jpegtran когда оборачивал в php, моя задача была обработать ещё и поддиректории.
Вот такие у обёртки параметры по умолчанию
set subdirs=+
set size_priority=+
set lowercase=-
set save_originals=-
set originals_in_each_dir=+
Главное отличие — я заменяю файлы в текущей директории, а не кладу их в out, может это и не кошерно, зато сохраняю оригиналы в случае надобности
Последний параметр понадобился, чтобы не решать, строить ли дерево поддиректорий с оригиналами в одной папке, либо в каждой обрабатываемой подпапке создавать папку «[originals]» с оригиналами.
в догонку.
Ключ size_priority=+
действует так.
Во временной папке создаются 3 файла утилитой jpegtran — с ключами
$param=array(
'',
' -optimize',
' -progressive',
);
и выбирается наименьший по размеру.
Утилита отчитывается — в большинстве случаев побеждает -progressive, иногда достаточно -optimize.
Ещё в информационном пространстве Земли существует потребность из EXIF стирать только программу редактирования =) но при этом чтобы не трогались всякие
накосячил в комментарии 10: В абзаце с буквы «Г», в скобках после «сохраняю оригиналы в случае надобности» должен быть «+»
Два раза перечитал
Да, кстати, а ширина картинки есть в ключах?
Не получается запустить с ключами:
makecorner --quality=99 400 --radius=40 --background=#ffcccc
вылетает с ошибкой: «память не может быть read». В папке out появляются файлы jpegtran.cmd и exe.
В этой версии так и работает.
Предложение добавить следующие опции:
1) обрабатывать/не_трогать файлы в поддиректориях
2) перезаписывать_оригиналы / не_перезаписывать. В случае перезаписи
3) не переименовывать файлы
4) не менять качество, если указан радиус 0
5) сделать возможность не менять размеры картинок (м.б. при не указанной ширине)
6) сохранять EXIF
Спасибо!
Огого :) Попробую всё сделать потихоньку. Хотя как не менять качество я пока не в курсе. jpegtran, по идее, должен это уметь, но на деле курочит картинки.
Написал оболочку: можно взять здесь ( http://rghost.ru/2558487/private/ed63808fe … b053bc3df7 ). Называется MCShell. Что умеет: передавать параметры qulity, width, radius, background (цветов мало, потом сделаю красиво, если востребована будет конечно), переходит в папку out. Разумеется только для Windows, должна работать на всех версиях, по крайней мере
В планах: добавить все параметры (пока нет маски, и пока в оболочке нельзя задавать папку через параметр
Также присоединяюсь к товарищам высказавшимся о том, что было бы неплохо убрать из EXIF последнее редактировавшее картинку приложение.
Огого :) Комьюнити :)
Я для начала попробую просто скопировать EXIF, а там уж доберусь и до парсинга.
@FIX
ну и октоторп в указании цвета не нужен :)
Новая версия оболочки: http://rghost.ru/2564426/private/535667cf2 … a0d2b98dd5
Теперь все функции, все цвета, типа улучшенный интерфейс.
В планах (пока делать не буду): настройки из ini, профили из него же, просмотр выходного каталога в оболочке
А так все как и было
Крутая штука! На чём написано?