Меню Рубрики

Linux png to ppm

Imagemagick used to generate PPM’s in Linux, PPM’s are unreadable

I need to generate PPM’s as raw data sources for one program. I have a bunch of png’s as Input, which I’m going to convert ppm’s. When I try a tool like mogrify it generates files, but these are unreadable to any image viewer programs such as GIMP:

I have installed netpbm package. I tried to open some other random PPM’s from other places, any image viewer can open and read those files, the problem exists with my own generated files. The files created with mogrify seem to have the right size for their resolution and contains bits.

In hex file viewer working file header looks like:

Mine generated with Imagemagick:

P7 WIDTH 640 HEIGHT 480 DEPTH 3 MAXVAL 255 TUPLTYPE RGB ENDHD

Probably I need to give Imagemagick some other parameters to make correct file format, but what? Or is there another tool which can easily convert png’s to ppm’s?

1 Answer 1

If you take a look at the wikipedia pages for PPM and PAM it says that the magic numbers for PPM are as follows:

Each file starts with a two-byte magic number (in ASCII) that explains the type of file it is (PBM, PGM, and PPM) and its encoding (ASCII or binary). The magic number is a capital P followed by a single digit number.

Whereas with the PAM format it’s magic number is P7. Also it was the following differences from the older formats (PPM, PNM, PGM, PBM):

The header for the PAM file format begins with P7, and (unlike in the other formats) ends in an explicit close: ENDHDR.

There is no plain (human-readable, ASCII-based) version of PAM. PAM files are always binary, and attempts to use the switch -plain with Netpbm programs that produce PAM output results in an error message.

For the black-and-white version of PAM (depth 1, tuple type BLACKANDWHITE), corresponding to PBM, PAM uses one byte per pixel, instead of PBM’s use of one bit per pixel (packing eight pixels in one byte). Also, the value 1 in such a PAM image stands for white (“light on”), as opposed to black in PBM (“ink on”).

Example

If I convert a PNG file to a PPM file using mogrify I get the following:

convert blah.png to blah.ppm:

As you can see, mogrify correctly generated a PPM file (see the P6).

So what’s wrong?

I’m wondering if there is something special about your source images that you’re converting to PPM, which the PPM format doesn’t support, and mogrify is not able to handle that automatically.

I would suggest interrogating the source image using the identify command:

The OP posted the original image here. Running this image through myself I couldn’t reproduce his result where mogrify would return a PAM file rather than a PPM file.

original png & new ppm files:

header info from files:

The file converted successfully for me. Running display some.ppm displayed the file so I’m not sure what to make of this. I did notice that the OP’s identify command showed the files as sRGB whlie on my system these files show up as «8-bit DirectClass». The differences between these 2 is detailed here, but I’m not sure what to make of it.

While researching this I came across several threads where there were bugs in ImageMagick related to sRBG and PNG. Here’s a link to one example.

Источник

Pngquant — утилита командной строки для сжатия изображений PNG в Linux

Оригинал: Pngquant – A Command-line Utility To Compress PNG Images On Linux
Автор: sk
Дата публикации: 27 августа 2019 года
Перевод: А. Кривошей
Дата перевода: декабрь 2019 г.

Pngquant — это бесплатная кроссплатформенная утилита командной строки с открытым исходным кодом для сжатия PNG с потерями. Она основана на переносимой библиотеке libimagequant и написана на C99. Она позволяет значительно уменьшить размер файла за счет преобразования изображения PNG в более эффективный 8-разрядный формат PNG и полностью сохраняет альфа-прозрачность. Как вы, возможно, уже знаете, 8-битные PNG-файлы часто на 60-80% меньше, чем 24/32-битные PNG-файлы. Изображения, сжатые с помощью Pngquant, полностью совместимы со всеми веб-браузерами и операционными системами. Pngquant может сжимать одно или несколько изображений одновременно.

Основные возможности Pngquant:

— поддержка пакетного преобразования нескольких файлов PNG;
— генерация высококачественной генерация палитры;
— использует алгоритм квантования Median Cut для оптимизации изображений;
— может быть легко интегрирована со скриптами оболочки, графическими интерфейсами и серверным программным обеспечением;
— конвертирует изображения с заданным качеством и пропускает изображения, которые нельзя конвертировать с требуемым качеством;
— поддержка многоядерности и оптимизация Intel SSE.

Установка

Pngquant может быть установлена разными способами.

Установка

Установка Pngquant из репозитория дистрибутива

Pngquant доступен в репозиториях по умолчанию большинства дистрибутивов Linux.

В Arch Linux и его вариантах Pngquant доступен в репозитории [Community]. Включите репозиторий Community и установите ее, используя Pacman, как показано ниже.

В Debian, Ubuntu, Linux Mint:

В Ubuntu и системах на его основе вам необходимо активировать репозиторий [Universe], чтобы установить Pngquant.

Активация репозитория Universe выполняется с помощью команды:

Проверьте версию установленной Pngquant:

Версия Pngquant, доступная в репозиториях по умолчанию, может быть старой. Если вы хотите самую последнюю версию, скомпилируйте и вручную установите ее из исходного кода, как показано ниже.

Установка Pngquant из исходного кода

Сначала установите необходимые зависимости.

Далее, клонируйте репозиторий git последней версии Pngquant:

Приведенная выше команда загрузит содержимое репозитория Pngquant GitHub и сохранит его в папке с именем «pngquant» в вашем текущем рабочем каталоге.

Перейдите в каталог pngquant:

Наконец, выполните следующие команды для компиляции и установки Pngquant:

Pngquant по умолчанию будет установлен в папку /usr/local/bin. Если вы хотите установить его в другой каталог, выполните команду:

Замените «dir» на ваш путь. Сначала нужно выполнить эту команду, а затем выполнить команду «sudo make install».

Проверьте версию Pngquant:

Установка Pngquant с помощью Cargo

Pngquant также можно установить с помощью диспетчера пакетов Cargo. Сначала установите Rust, как описано по ссылке ниже.

Клонируйте репозиторий git с последней версией Pngquant:

Наконец, соберите и установите Pngquant, используя Cargo, как показано ниже.

Для других способов установки, пожалуйста, обратитесь к официальной странице установки Pngquant .

Сжатие изображений PNG в Linux с помощью Pngquant

Использование Pngquant тривиально и не требует специальных навыков.

В моем текущем каталоге у меня есть файл PNG с именем «ostechnix.png». Позвольте мне показать вам его размер.

Как видите, размер изображения составляет 152 Кб.

Сжатие изображения PNG

Теперь давайте сожмем это изображение, используя команду:

Приведенная выше команда сожмет файл ostechnix.png и сохранит его как новый файл с именем «ostechnix-fs8.png». По умолчанию Pngquant будет использовать имя выходного файла, такое же, как имя входного файла с суффиксом -or8.png или -fs8.png в конце. Это означает, что исходный файл не будет перезаписан. Если вас не устраивает степень сжатия, просто удалите сжатый файл.

Давайте еще раз проверим размер сжатого файла изображения:

Видите? Pngquant уменьшил размер изображения со 152К до 48К. Это действительно хорошая работа. Откройте изображение с помощью любой программы для просмотра изображений и сравните их. Вы не найдете большой разницы в качестве между оригинальным и сжатым изображениями. Оба изображения будут выглядеть почти одинаково!

Отображение сообщений о процессе во время сжатия

По умолчанию Pngquant не будет отображать то, что происходит за кулисами при сжатии изображений. Если вы хотите просмотреть сообщение о состоянии процесса, используйте следующую команду:

Теперь вы увидите прогресс во время сжатия.

Сжатие нескольких изображений PNG

Pngquant также может конвертировать несколько изображений сразу. Следующая команда сжимает picture1.png и picture2.png в текущем рабочем каталоге.

Также мы можем переместить все файлы в каталоге и сжать их за один раз. Например, чтобы преобразовать все изображения в папке с именем «/home/sk/images», выполните:

Изменение суффикса имени выходного файла

Как я уже сказал, имя выходного файла совпадает с именем входного, за исключением того, что оно заканчивается на «-fs8.png», «-or8.png». Однако вы можете изменить суффикс, как вы хотите.

Эта команда сожмет файл ostechnix.png и сохранит его как ostechnixlinux.png.

Отмена сохранения файлов, если размер сжатых файлов превышает размер исходных файлов

Зачем нужно сжатие, если преобразованные файлы больше исходных файлов? Такое преобразование не нужно, поэтому мы можем пропустить его, как показано ниже.

Приведенная выше команда сохранит преобразованный файл, только если он меньше исходного.

Сохранение конвертированных файлов в другом месте

По умолчанию Pngquant сохраняет входные и выходные файлы изображений в одной директории. Если вы хотите сохранить выходной файл в другом месте, команда будет следующей:

Эта команда сожмет ostechnix.png и сохранит его как output.png в каталоге Documents.

Сжатие изображений в нестандартном качестве

Pngquant сжимает изображения в максимально возможной степени. Мы также можем вручную установить качество изображения. Pngquant позволяет нам устанавливать качество изображения в диапазоне от 0 (наихудшее) до 100 (идеальное), используя параметры min и max.

В следующем примере минимальное качество изображения устанавливается равным 60, а максимальное — 80.

Если качество преобразования ниже минимального, изображение не будет сохранено.

Очистка метаданных изображения

Метаданные изображения — это набор данных о нем. Они включают в себя всю информацию об изображении, такую как формат изображения, настройки камеры, DPI, дата и время изображения, заголовок и комментарии, геолокация и многое другое. Обратитесь к приведенной ниже статье, чтобы узнать, как просматривать метаданные изображения.

Если у вам не нужны метаданные, вы можете просто удалить их, используя pngquant, как показано ниже.

Для получения более подробной информации см. справочную страницу pngquant.

Я использую Pngquant уже много лет. Он очень помогает мне сжимать изображения PNG до 70% и более. Если вы ищете оптимизатор изображений PNG, Pngquant может быть хорошим выбором.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Savefrom net для mac os
  • Sasplanet для mac os
  • Sas планета mac os
  • Sas planet mac os
  • Samsung smart view для mac os