Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Графика » ImageMagick, GraphicsMagick: convert, montage, mogrify и др.

Модерирует : Ausw

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7

Открыть новую тему     Написать ответ в эту тему

ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 
ImageMagick
display, convert, montage, mogrify, conjure, identify, compare, animate, composite, import, stream






ImageMagick (Имидж-мэджик) — свободный и кроссплатформенный инструмент для обработки изображений, один из старейших и наиболее мощных из ныне живых, имеет множество программных (для Си, Си++, Перла, Питона и т. д.) и два пользовательских интерфейса: практически неиспользуемый графический и неинтерактивный, который представлен набором консольных утилит, перечисленных в подзаголовке. Последний сегодня занимает серьезную нишу пакетной обработки графики. Преимущественно ему и посвящена эта ветка.
 
Документация:
 
 
GraphicsMagick
gm display, gm convert, gm montage, gm mogrify, gm conjure, gm identify, gm compare, gm animate, gm composite, gm import, gm batch






GraphicsMagick (Графикс-мэджик) — активно развивающийся форк ImageMagick’а. Несмотря на уже более чем десятилетнюю самостоятельную историю, пакет с точки зрения пользователя до сих пор во многом идентичен родителю, хотя и не имеет обратной совместимости.

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 01:44 02-08-2013 | Исправлено: Xant1k, 13:25 09-07-2020
Archivist

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ewild
Спасибо за более изящное решение, но надо заметить, что в моем варианте ФШ не ругается.

Всего записей: 135 | Зарегистр. 10-08-2018 | Отправлено: 16:09 27-05-2021
ewild

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Archivist  
а у меня ругается и в вашем =)
Может быть это как-то зависит от исходных файлов.

Всего записей: 1082 | Зарегистр. 13-08-2005 | Отправлено: 16:33 27-05-2021
kraeved



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:

Код:
magick "%%f" -layers merge -alpha off -colors 256 -quality 100 -strip png8:"%_dirOut%\%%~nf.png"

kraeved
После замены на convert, скрипт отрабатывает…
 
Насколько я понимаю порядок такой:  
 сливаются слои в один -layers merge
 отключается прозрачность -alpha off  
 уменьшается количество цветов палитры до 256  -colors 256
 выставляем максимальное качество  -quality 100
 удаляем дополнительную информацию из изображения  -strip
 выбираем формат сохранения png8:
 
Вопрос такой, если в качестве исходных используются отсканированные изображения, то насколько необходимо производить данные операции? Потому что исходные файлы имеют один слой и не имеют прозрачных элементов. Png8 больше 255 цветов не поддерживают, а вот какое значение -quality установлено по умолчанию, если не указывать, мне не известно. Если использовать параметр -strip, то в полученном файле нет информации о dpi и соответственно размер отпечатка по dpi становится больше чем он в исходном файле.

Falcon99
 
  • -layers и -alpha можно убрать в свете ваших уточнений
  • -quality это не визуальное качество у PNG, а степень сжатия файла (умолчание 75)
  • индексированная палитра PNG может содержать до 256 цветов
  • png8: это внутренняя команда для сохранения со специфическими ограничениями  
  • -colors 256 задаёт верхний предел поиска цветов для палитры, что выходит лучше,
    когда нет попыток втиснуть прозрачность и назначить фон (через чанк bkgd, который
    среди прочих выпиливается командой -strip), но и тогда палитра зачастую не доходит
    до предела; начиная с версии 7.0.9.10 -colors можно заменить на медленный -kmeans,
    дабы находить больше цветов; с этими ключами палитра выходит приятнее глазу, чем
    та, которую даёт голый png8: — наилучшую же палитру можно получить, конвертируя
    TIF в полноцветный PNG и затем передавая тот отдельной утилите (см. сравнение)
  • -define png:include-chunk=phys до или после -strip сохранит DPI исходника

  • Всего записей: 801 | Зарегистр. 01-03-2003 | Отправлено: 05:54 03-06-2021 | Исправлено: kraeved, 16:20 03-06-2021
    Falcon99



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kraeved
    Большое спасибо за развернутый ответ, теперь стало гораздо понятнее.
    Т.к. до этого не мог понять почему указание сохранения в png8, без указания дополнительных параметров вызывало уменьшение количество цветов в файле меньше чем 255.

    Всего записей: 581 | Зарегистр. 12-10-2005 | Отправлено: 10:11 06-06-2021
    Falcon99



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kraeved

    Цитата:
    — наилучшую же палитру можно получить, конвертируя
    TIF в полноцветный PNG и затем передавая тот отдельной утилите (см. сравнение)  

     
    Попробовал pngnq и pngquant. Зрительно разницы не заметил, ни между собой, ни с полученным с помощью Вашего скрипта версии 2, а вот размеры у них больше.
    Для обработки утилитами исходный файл пересохранил в полноцветный png, для сравнения полученный напрямую из tif с помощью Вашего скрипта:
     
    Для запуска обработки с помощью pngng использовалась строка, рекомендованная на сайте разработчика.  

    Код:
    pngnq -n 256 image.png && pngcrush image-nq8.png smallimage.png

    Версия использовалась 0.5, т.к. более свежие представлены только ввиде исходников, а не скомпилированных бинарников.
    Pngcrush использовался последний на данный момент версии 1.8.11 x32.
     
    Для обработки с помощью pngquant использовался bat файл "Drag PNG here to reduce palette to 256" предлагаемый разработчиком.  

    Код:
    pngquant.exe --force --verbose 256 image.png

    Версия утилиты  2.15.1, т.к. по Windows XP не заработала, то для теста пришлось использовать другую машину.
     
    Результаты работы следующие:
    Файл №1 Файл №2    
    Исходный tif: 229 375 860 байт 431 605 048 байт    
    Исходный png: 174 340 405 байт 223 686 479 байт    
    Png после pngnq: 65 918 883 байт 102 444 782 байт    
    Png после pngnq+pngcrush: 65 797 774 байт 94 982 844 байт    
    Png после pngquant: 67 887 390 байт 102 444 782 байт    
    Png после vips: 67 132 670 байт 92 554 346 байт    
    Magick из исходного tif: 58 046 759 байт (напрямую из tiff конвертация не прошла)    
    Magick из полноцветного png: 58 046 746 байт 70 525 274 байт

     
    Так что получается что ImageMagick дает меньшие размеры с почти таким же качеством, во всяком случае на моих файлах.
     
    P.s. Правда ImageMagick у меня обрабатывает файлы гораздо дольше этих утилит, примерно раза в три.
     
    Добавлено 09.06.2021 г. В таблицу добавил результат после обработки с помощью утилиты Vips

    Всего записей: 581 | Зарегистр. 12-10-2005 | Отправлено: 08:07 08-06-2021 | Исправлено: Falcon99, 10:08 09-06-2021
    kraeved



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Falcon99
    Вам чертежи сжимать, где суперпалитра не требуется, да ещё под XP, где её толком не получить.
    Выполните nconvert -colors 256 -floyd -out png -o out.png in.tif и переходите к следующей задаче.
    Отработает быстро и с приемлемым результатом, споткнётся только на Unicode-символах в именах.
    А если добавить -keepfiledate, то не потребуется и последующий вызов touch.

    Всего записей: 801 | Зарегистр. 01-03-2003 | Отправлено: 15:26 08-06-2021 | Исправлено: kraeved, 15:33 08-06-2021
    Falcon99



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kraeved

    Цитата:
    Выполните nconvert -colors 256 -floyd -out png -o out.png in.tif и переходите к следующей задаче.  

     
    Я как раз с ее помощью и перегонял tif в png, но только в полноцветный png. Если же с его  помощью делать вариант из 256 цветов, то фон становиться серым, что не устраивает. Поэтому Ваш скрипт предпочтительнее.
     
    Я в принципе сделал таблицу просто для информации, что ImageMagick позволяет делать файлы меньшего размера чем при использовании рекомендуемых им же утилит. Поэтому желательно делать предварительное тестирование, а потом проводить обработку необходимых файлов.

    Всего записей: 581 | Зарегистр. 12-10-2005 | Отправлено: 16:41 08-06-2021
    kraeved



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Falcon99
    Если же с помощью Nconvert делать вариант из 256 цветов, то фон становиться серым…

    Да, бывает. История тянется с 2005 года. Тогда разработчик предложил ключ -dither вместо -floyd
    и с тем фон становится белым, но палитра выходит бедной, что сказывается на качестве в целом.
    Написал ему письмо, показал недостатки и сравнение с ImageMagick, авось очнётся и доработает.
    А пока ещё одна шустрая альтернатива: vips pngsave in.tif out.png --palette --strip
     

    Всего записей: 801 | Зарегистр. 01-03-2003 | Отправлено: 06:26 09-06-2021 | Исправлено: kraeved, 07:37 09-06-2021
    U235

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как вариант, можно еще задать фиксированую палитру (например, так, чтобы там был белый и не было серого, для своих чертежей я сделал четырехцветный файл-палитру,  оранжевый, синий, черный, белый) и использовать опцию -remap
    Типа того:

    Код:
    convert input.tif -remap palette.png output.png

    Всего записей: 715 | Зарегистр. 14-12-2005 | Отправлено: 07:52 09-06-2021
    Falcon99



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kraeved
    Попробовал Vips, результат добавил в таблицу. Работает довольно быстро, результат, палитра получается качественная размер, плюс-минус сопоставим с pngn и pngquant. Но в отличии от pngnq под XP увы не работает и размер больше получаемого с помощью ImageMagick. Поэтому останавливаюсь на таком вариант, когда критична скорость обработки, то convert ImageMagick в png8 без предварительного уменьшения цветов, что резко уменьшает время обработки и размер выходного файла, но получаем грубую палитру, которая вносит искажения в отображение. Если же время позволяет, то Ваш скрипт, т.к. и размер поменьше чем другими утилитами и качество хорошее.
     
    U235

    Цитата:
    Как вариант, можно еще задать фиксированую палитру (например, так, чтобы там был белый и не было серого, для своих чертежей я сделал четырехцветный файл-палитру,  оранжевый, синий, черный, белый) и использовать опцию -remap

    К сожалению исходные файлы это сканы с подписью и печатью, да и убрать серый из палитры не получится, он при сканировании занимает приличную часть изображения.
     
    Спасибо за помощь, проблему свою считаю полностью решенной.

    Всего записей: 581 | Зарегистр. 12-10-2005 | Отправлено: 10:21 09-06-2021 | Исправлено: Falcon99, 10:24 09-06-2021
    kraeved



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Falcon99
    ImageMagick можно ускорить или хотя бы снизить потребление ресурсов, сменив суффикс Q16 на Q8.
    Последняя 7 с поддержкой XP это 7.0.10-19, но т.к. разработчики оторваны от мира и удаляют версии,
    едва кремниевый гегемон прекращает поддержку той или иной ОС, то на офсайте бинарников уже нет,
    в Архиве тоже нет, а компилировать из исходников отважится редкий. Ранее я нашёл для вас 7.0.10-1,
    но та Q16 Portable, а теперь пираты передали 7.0.10-15 Q8 Static, которую я перепаковал в zip.
     
    Есть ещё один относительно быстрый (хотя и прожорливый) способ получить палитровый png под XP:
    ffmpeg -i in.tif -lavfi palettegen=max_colors=256:reserve_transparent=0[pal];[0][pal]paletteuse,format=pal8 out.png
    Тут для более гладкого понижения цветности используется алгоритм Sierra2-4A, но доступны и другие,  
    а вот команды для переноса плотности нет, но её можно установить с помощью -dpi 300 перед out.png

    Всего записей: 801 | Зарегистр. 01-03-2003 | Отправлено: 16:20 09-06-2021 | Исправлено: kraeved, 17:14 09-06-2021
    Falcon99



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kraeved

    Цитата:
    ImageMagick можно ускорить или хотя бы снизить потребление ресурсов, сменив суффикс Q16 на Q8.  

    Ваша правда, с Вашим архивом ImageMagick-7.0.10-15-Q8-x86 скорость сильно возросла, только утилиту identify пришлось взять из предыдущего.  
     
    Завтра попробую вариант с ffmpeg.

    Всего записей: 581 | Зарегистр. 12-10-2005 | Отправлено: 17:58 09-06-2021
    kraeved



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Falcon99
    …только утилиту identify пришлось взять из предыдущего…

    Это необязательно.
    Или допишите magick перед identify, или сделайте копию/симлинк magick.exe с именем identify.exe
    Ровно то же можно проделать и в будущем, если понадобятся compare, conjure, mogrify, montage…

    Всего записей: 801 | Зарегистр. 01-03-2003 | Отправлено: 18:21 09-06-2021 | Исправлено: kraeved, 18:31 09-06-2021
    Alex_Piggy

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброе время.
    Небольшой оффтоп - на зеркалах были старые версии ImageMagick с 2012 до 2020 года. Последняя - 7.0.10-25. А потом зеркала прикрыли...
    https://web.archive.org/web/20200804030241/http://ftp.icm.edu.pl:80/packages/ImageMagick/
    https://web.archive.org/web/20200804030241/http://ftp.icm.edu.pl:80/packages/ImageMagick/ImageMagick-7.0.10-19-Q8-x86-static.exe
    UPD - не понял. Похоже что ссылки накрылись.Шестая ветка есть вся, седьмая - до 7.0.9
    https://github.com/ImageMagick/ImageMagick/discussions/2376

    Всего записей: 1823 | Зарегистр. 07-08-2002 | Отправлено: 19:15 09-06-2021 | Исправлено: Alex_Piggy, 20:01 09-06-2021
    Falcon99



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу прощения что вчера не ответил, была запарка на работе.
     
    kraeved
     

    Цитата:
    Есть ещё один относительно быстрый (хотя и прожорливый) способ получить палитровый png под XP:
    ffmpeg -i in.tif -lavfi palettegen=max_colors=256:reserve_transparent=0[pal];[0][pal]paletteuse,format=pal8 out.png

    Попробовал последнюю версию ffmpeg для XP по номером 3.0, да и билды сконфигурированные под нее из темы на этом же форуме пробовал. Результат один, ошибка из-за выделения памяти и прекращение работы.
    Но честно говоря делал это уже из спортивного интереса, т.к. работа скрипта на основе " ImageMagick-7.0.10-15-Q8-x86" полностью устраивает. Спокойно работает на Windows Server 2003, где и хранятся файлы и никому не мешает, потому кстати и просил вариант под ХР, т.к. изначально на такой вариант и расчитывал, чтобы зря файлы по сети не гонять.
     

    Цитата:
    Или допишите magick перед identify, или сделайте копию/симлинк magick.exe с именем identify.exe  

    Сделал как сказали, все работает.

    Всего записей: 581 | Зарегистр. 12-10-2005 | Отправлено: 08:32 12-06-2021
    kraeved



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Falcon99
    А чем не устроил IrfanView, с которого вы начинали? i_view32.exe in.tif /bpp=8 /convert=out.png
    Работает шустро, ест мало, качество хорошее. Да, выходит крупнее IM, но сопоставимо с Vips.

    Всего записей: 801 | Зарегистр. 01-03-2003 | Отправлено: 15:16 12-06-2021 | Исправлено: kraeved, 15:21 12-06-2021
    Falcon99



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kraeved

    Цитата:
    А чем не устроил IrfanView, с которого вы начинали? i_view32.exe in.tif /bpp=8 /convert=out.png

    Не поверите именно с него и начинал искать замену ImageMagick, т.к. активно использую в работе, но он при конвертации в 256 цветов, фон делал заметно более серым чем у оригинала и файлов полученных с помощью ImageMagick.

    Всего записей: 581 | Зарегистр. 12-10-2005 | Отправлено: 10:04 16-06-2021
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7

    Компьютерный форум Ru.Board » Интернет » Графика » ImageMagick, GraphicsMagick: convert, montage, mogrify и др.


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2020

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru