Формат файла не поддерживается файл должен содержать палитру 256 цветов

Обновлено: 16.05.2024

Больше половины заказов ретуши на нашем сайте приходит с просьбой подготовить готовый эскиз в формате BMP 8bit . Наверняка мало кто знает, чем этот формат отличается от других, в чем его особенность.

Расширение BMP обычно используется для хранения растровых изображений. BMP – это стандартный, не сжатый битовый графический формат, используемый в Windows.

BMP файл хранит графику в формате, который называется аппаратно-независимый растр. Файл BMP состоит из заголовка файла (растровый идентификатор, размер файла, ширина, высота, варианты цвета, и растровые данные начальной точки), заголовка изображения (может отсутствовать), палитры (может отсутствовать) и самого изображения.

Битмапы, которые также называются растровыми изображениями, используют сетку (битовую карту или растровую) малых квадратов, которые известны, как пиксели, для представления изображений. Для каждого пикселя отводится определенное место и значение цвета. Файлы BMP могут содержать различные уровни глубины цвета на пиксель, в зависимости от количества битов на пиксель, указанной в заголовке файла. Они также могут храниться с использованием оттенков серого цветов.

Формат BMP считается независимым от устройства, на котором используется. Однако некоторые его особенности могут вызывать ошибки на разных устройствах, в разных программах.

Основным параметром BMP изображения является глубина цвета. От нее зависит количество цветов, которые могут быть использованы в изображении. Например, при глубине цвета в 1 бит в изображении может быть только 2 цвета – черный и белый, а при глубине в 8 бит в изображении могут быть использованы до 256 цветов. В дальнейшем речь пойдет о глубине в 8 бит.

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

Яркость каждого измеряется в числах от 0 до 255. Формат BMP, в отличие от других форматов, заранее определяет палитру изображения, на которую в дальнейшем ссылается.

Одной из причин возникающих ошибок являются сдвиги в палитре, когда используемых цветов меньше, чем рассчитано в палитре, пустые ячейки дублируются и палитра получается неполной т.е. состоит уже не из 256 уникальных цветов. Некоторые программы не рассчитаны на это и выдают ошибку вроде «Палитра должна состоять из 256 цветов».

Эталонное BMP изображение в оттенках серого состоит из 256 уникальных цветов, в которых яркости всех цветов равны т.к. яркость красного равна яркости зеленого и синего. Например, абсолютно черный цвет получится при всех трех параметрах равными 0, абсолютно белый – при параметрах равных 255, а абсолютно серый (по мнению компьютера) – при параметрах равных 126.


Иногда к этим трем параметрам добавляется еще один, например, прозрачность цвета, которая также измеряется от 0 до 255. В этом случае каждый из 256 цветов в палитре может иметь еще 256 подобных цвета, но с разной прозрачностью. В итоге - либо цвет описывается не 8 битами, либо изображение становится не «в градациях серого», а полноценным цветным. В этой ситуации может появляться ошибка вроде «Файл изображения должен иметь 8 бит/точку с палитрой градации серого цвета».

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

Онлайн редактор генерирует эталонные тоновые BMP изображения, в которых строго 256 уникальных цветов в палитре и нет посторонних параметров в описании цветов, например - прозрачности.

Аналогичным образом и конвертируются изображения в магазине картинок . Такие изображения отлично работают в большинстве случаев.

Здравствуйте. Собственно, САБЖ. Необходимо создать палитру 256 цветов и сохранить ее в файл.

Ну вопрос поставлен не совсем точно.
Возникают вопросы.
Вам нужно создавать палитру из цветов типа TrueColor ?
Тогда нужно определиться с зависимостью изменения цвета от номера цвета.
Учтите. Самих палитр из 256 цветов True Color может быть большое множество.
Читайте :
Каждый цвет может принимать количество значений = 256*256*256.
И каждое из этих значений может присутствовать в любой из 256 позиций.

Есть предположение о том, что вам нужно создать палитру, где для каждого приращения интенсивности зеленого цвета интенсивность красного цвета изменяется (корень квадратный(корень квадратный(256))) раз.
А для каждого приращения интенсивности синего цвета — интенсивность зеленого изменяется
(корень квадратный(256)) раз.

При изменении номера цвета чаще всего изменяется красный, реже зеленый и ещё реже синий.

Я так понимаю палитра — это последовательность структур R, G, B и еще какой-то ненужный байт. Так? Но как она должна располагаться в bmp-файле? Имеется ввиду, например само изображение расположено вверх ногами, а как с палитрой.

Надеюсь понятно. Спасибо за помощь.

1. Сначала идут латинские символы "B" и "M".
2. Четырехбайтное значение размера файла в байтах.
3. Две двубайтные резервные области (равны 0 обе). Т. е. четере байта равны нулю.
4. Четырехбайтное значение смещения к началу растрового изображения.
Далее идет структура, характеризующая методику кодировки растра.
5. Размер (Четырехбайтное значение) этой структуры в байтах (должно быть 0x00000028).
6. Четырехбайтное значение ширины изображения в пикселах.
7. Четырехбайтное значение высоты изображения в пикселах.
8. Двухбайтное значение числа цветовых плоскостей (обычно равно 1).
9. Двухбайтное значение числа бит на пиксел (обычно равно 1 или 4 или 8 или 16 или 24 или 32).
10. Четырехбайтное значение метода сжатия (обычно 0).
11. Четырехбайтное значение размера собственного изображения в байтах.
12. Четырехбайтное значение разрешения по горизонтали в пикселах на метр.
13. Четырехбайтное значение разрешения по вертикали в пикселах на метр.
14. Четырехбайтное значение числа цветов в изображении.
15. Четырехбайтное значение числа важных цветов.

Далее следует палитра, если изображение не 24 или 32 битное.
Я не знаю, следует ли палитра, если изображение 16-битное ?

Палитра "*.bmp" файла представляет собой массив значений цветов, где каждый элемент массива размером в 4 байта, и самый младший байт (нулевой байт) кодирует интенсивность синей составляющей цвета, затем следующий байт кодирует интенсивность зеленой составляющей цвета, и наконец второй байт — интенсивность красной составляющей цвета. Самые старшие быйты каждого элемента ничего не кодируют.
Следует заметить, что цвет пиксела канвы кодируется не так.
Самый младший байт кодирует интенсивность красной составляющей цвета, а не синей. (Если мне не изменяет память).

Далее следуют перечисление номеров элементов палитры, которым соответствуют цвета определенных пикселов в порядке слева направо и снизу вверх.

Таким образом, если присутствует палитра, то пикселы "*.bmp" файла могут быть только таких цветов, которые имеются в палитре цветов.

Я бы задал такой вопрос.
А зачем Вам генерировать палитру ?

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

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

Любое изображение, хранящееся на компьютере, имеет свой графический формат. Каждый из графических форматов имеет свои свойства и своё предназначение. На сегодняшний день существует огромное количество графических форматов. Большую часть графических форматов, мы будем рассматривать на основе одного из самых популярных графических редакторов Adobe Photoshop. Почему именно фотошоп, все просто, этот графический редактор обладает наибольшим количеством форматов.

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

Итак, приступим:

PSD – это собственный формат программы Adobe Photoshop, он позволяет сохранять всю проделанную работу над изображением. А именно прозрачность, режимы смешивания слоев, тени, слои, маски слоя и все остальные мелочи работы проделанной с изображением. Этот формат обычно используется, если работа над изображением до конца не завершена. Так же его часто используют для разработки макета сайта, так как производить верстку с данного файла удобно видя все слои и элементы. А во всех остальных случаях его использование нет смысла, так как он имеет значительно большой размер файла по отношению к другим форматам.

TIFF – позволяет максимально точно сохранить подготовленный проект фотошопа. Он содержит не только пиксельную информацию, но также плотность точек на изображение при печати dpi. Еще он может хранить несколько слоев изображения плюс информацию о прозрачности каналов. Использование этот формат получил в основном в полиграфии.

BMP – это точечный рисунок. Изображение в этом формате состоит из массы точек, каждая из которых содержит свой цвет. Этот формат имеет очень большой размер и хорошо подвергается сжатию архиваторами. Потери качества в BMP не значительное, однако, он уступает TIFF.

JPEG – это самый широко используемый формат. Он получил широкое использование в цифровой технике (фотоаппаратах). Причина столь широкого использования это довольно не плохое качество и маленький размер файла. Но маленький размер говорит о том, что значительно теряется качество изображения. Все дело в алгоритме сжатия изображений, он состоит в том что, сжимаясь, изображение значительно теряет точность. Этот формат по этим причинам не желательно использовать в полиграфии. Но плюсом является то, что их удобно посылать по email (электронной почте), выкладывать в Интернете и хранить на дисках.

JPEG 2000 – формат графических файлов с хорошей компрессией. Качество изображения по сравнению с JPEG получается более гладкое и четкое, а размер файла в одинаковом качестве в разы меньше. Графические файлы, сохранённые в JPEG 2000, с высокой степенью сжатия не содержат артефактов.

Поддерживает сжатие изображений, как с потерями качества, так и без него. Кроме этого формат JPEG 2000, поддерживает «прогрессивное сжатие», которое по мере загрузки файла позволяет увидеть качественное изображение, изначально представленное как размытое. Расширение файлов: .jp2, .j2k, .jpf, .jpm, .jpg2, .j2c, .jpc.

JPEG XR – формат кодирования изображений, разработанный Microsoft. Сжимает фотографии больше и лучше JPEG 2000 может сжимать без потери качества. Поддерживает прозрачность и различную степень сжатия. JPEG XR достаточно эффективный формат для сжатия изображений, при достаточно большом проценте сжатия, на изображение практически отсутствуют артефакты.

Изображения JPEG XR загружаются быстрее, чем в формате JPEG2000. Формат поддерживает 16bit, что дает возможность хранить картинки с полным охватом цветов размером меньше чем в формате TIFF. Расширение файлов: .jxr, .hdp, .wdp.

GIF – в основном используется для изготовления графики для Интернета. Он не годится для сохранения фотографий, так как имеет ограничение по цветопередаче, по этим же причинам он не годится для полиграфии. Изображение данного графического формата состоит из точек, которые могут включать в себя от 2 до 256 цветов. Ограниченность цветопередачи и поддержка прозрачности делают его незаменимым для хранения изображений с минимум цветов, например логотипов. Еще одна особенность формата это возможность изготовления анимированных изображений. Широко применяют для создания gif (анимированных) баннеров.

EPS – можно назвать наиболее надежным и универсальным форматом. Он в основном предназначен для передачи векторной и растровой графики в издательства, возможность создания и использования данного формата практически всеми графическими редакторами. Использовать данный формат имеет наибольший смысл только в том случае, если вывод осуществляется на PostScript-устройстве.

PICT – это собственный формат Макинтош. Формат способен включать в себя как растровую, так и векторную информацию, текст, а также звук, использует RLE-компрессию. Битовые PICT-изображения могут иметь абсолютно любую глубину битового представления. Векторные же PICT-изображения, которые практически исчезли из использования в наши дни, имели необычные проблемы толщины линии и другие отклонения во время печати.

Формат используется для Макинтош, и при создании определенных презентаций только для Мак. На обычных компьютерах (не мак) PICT – формат представлен с расширением .pic или .pct, считывается определенными программами, работа с этим форматом зачастую бывает не простой.

PDF –формат предложен и разработан компанией Adobe, как формат для электронной документации, различных презентаций и верстки для пересылки его по электронной почте. И его проектная особенность была обеспечить компактный формат. По этим причинам все данные в pdf могут сжиматься, причем особенность в нем такая, что к разного рода информации применяются разные, более подходящие для этих типов данных сжатия: JPEG, RLE, CCITT, ZIP.

PCX – формат растрового изображения. Файлы pcx типа используют стандартную палитру цветов, этот формат был расширен для хранение 24-битных изображений. Этот формат аппаратно зависим. Предназначен хранить информацию в файле в том же виде, что и в видео-плате. Чтобы совместить этот формат со старыми программами необходима поддержка EGA-режима видеоконтроллера. Алгоритм сжатия быстрый и занимает малый объём памяти, но не очень эффективен, не подойдет для сжатия фотографий и детальной компьютерной графики.

ICO – этот формат разработан для хранения значков файлов. Размеры ico файлов могут быть любыми, но наиболее используемые значки со сторонами в 16, 32 и 48 пикселей. Еще используются иконки с размерами 24, 40, 60, 72, 92, 108, 128, 256 пикселей. Данные в значках обычно не сжимаются. Значки бывают в цвете True Color, High Color , или с четко фиксированной палитрой. По своей структуре файлы ICO наиболее близки к BMP формату, но отличаются от bmp присутствием маски, накладываемой на задний план с помощью операции побитового «И», что дает возможность реализовать прозрачность.

RAW – это формат данных, содержащий в себе необработанную информацию (или обработанную в минимальной степени), созданный напрямую поступающей информацией с матрицы фотокамеры (видеокамеры и д.р.). Этим форматом обозначают не только фото данные, но и исходные данные звукозаписи или видео. Данный формат хранит всю информацию о файле и имеет больший потенциал для обработки фотографий, нежели формат JPG. RAW сохраняет максимально возможное качество. Данные в RAW-файлах могут быть несжатыми, сжатыми без потерь или сжатыми с потерями.

SVG – формат масштабируемой векторной графики (Scalable Vector Graphics). Формат создан W3C. В соответствие со спецификацией он создан для описания двумерной векторной и смешанной векторной/растровой графики в XML. Включает в себя три типа объектов: фигуры, изображения и текст. Поддерживает неподвижную, анимированную так и интерактивную графику. Создавать и редактировать можно как в текстовых редакторов посредством правки кода, так и в любом графическом редакторе для векторной графики (Adobe Illustrator, Inkscape, CorelDRAW, Corel SVG Viewer). SVG – это открытый стандарт не является чьей либо собственностью.

По сравнению с PNG изображениями формат WebP имеет вес на 26% меньше без потери качества. По сравнению с изображениями JPEG формата WebP на 25-34% меньше весит, но с потерями качества по индексу структурного сходства.

  • Поддерживает прозрачность (альфа-канал).
  • WebP поддерживается в Chrome, Firefox, Edge, Opera и других инструментах и ​​библиотеках. При разработке сайтов для корректного отображения в браузерах, которые не поддерживают WebP формат, рекомендуется использовать поддержку альтернативных изображений.
  • Включает легкую библиотеку libwebp для кодирования и декодирования.
  • Инструменты командной строки cwebp и dwebp для преобразования изображений в формат WebP и обратно.
  • Инструменты просмотра, мультиплексирования (передача нескольких потоков данных с меньшей скоростью по одному каналу) и анимации изображений WebP.

AVIF – (AV1 Still Image File Format) эффективный формат сжатия изображения с потерей качества, основанный на библиотеке для сжатия кадров кодека AV1. AVIF – бесплатный формат, совместимый с HEIF. Может хорошо обработать изображение, получив небольшой вес файла с высокой детализацией. Обеспечивает быструю загрузку изображений на сайтах в Интернете.

  • Поддерживает прозрачность (альфа-канал).
  • Может хранить несколько изображений.
  • Поддерживает анимацию.
  • Имеет стандарт EXIF (позволяет добавлять к изображению дополнительную информацию). Например, авторство.
  • Поддерживает миниатюры изображения.
  • Имеет преимущества по сжатию: примерно на 20% сжимает лучше WebP и на 50% чем Jpg.

Конвертировать изображение в .avif файл можно в сервисе Squoosh.
Расширение файлов: .avif

Хороший верстальщик должен уметь правильно выбирать форматы изображений для своей вёрстки, чтобы изображения отображались без погрешностей и имели оптимальный размер при загрузке. Давайте разберёмся, какие бывают форматы изображений и в каких ситуациях лучше выбрать тот или иной формат.

Растровые форматы

Для начала рассмотрим форматы, которые относятся к растровой графике: GIF, JPEG, PNG и WebP. Подробнее о растровой графике можно прочитать в статье «Растровая и векторная графика».

Основные характеристики, которые нас будут интересовать при выборе формата — это качество изображения, вес и количество цветов. В вебе тяжёлые изображения непрактичны, поскольку они долго загружаются. Чтобы уменьшить вес файла, используются алгоритмы сжатия. Сжатие может быть с потерями и без потерь. При выборе подходящего формата изображения, нам нужно найти баланс между весом файла и качеством картинки, так как некоторые алгоритмы сжимают изображения с потерей качества. Теперь рассмотрим каждый из форматов подробнее.

GIF (Graphics Interchange Format)

Формат был разработан компанией CompuServe в далёком 1987 для передачи растровых изображений по интернету. GIF имеет цветовую палитру, состоящую из 256 цветов. Алгоритм GIF выбирает 256 наиболее используемых в исходном изображении цветов, а все остальные оттенки создаются путём подмешивания — подбора соседних пикселей таким образом, чтобы человеческий глаз воспринимал их как нужный цвет. По этой причине GIF не подходит для хранения полноцветных изображений и фотографий.

Формат поддерживает прозрачность — каждый пиксель изображения может быть в двух состояниях: прозрачный или непрозрачный, полупрозрачность не поддерживается.

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

Таким образом, формат GIF подходит если:

  • изображение не многоцветное;
  • нужна простейшая прозрачность;
  • нужна анимация.

JPEG (Joint Photographic Experts Group)

Формат JPEG получил своё название от объединённого комитета экспертов по фотографии, который и создал этот стандарт в конце 80-х — начале 90-х годов. Он был разработан для сжатия и хранения полноцветных фотографий. Поддерживает более 16 миллионов цветов.

Формат JPEG сжимает изображения с потерей качества. Алгоритм сжатия основан на разбиении исходного изображения на квадраты 8×8 пикселей, и последующей их группировке. Можно получать JPEG изображения очень маленького веса, но только за счёт ухудшения качества картинки, можно получить и очень качественные JPEG, но тогда картинка будет слишком тяжёлой. Поэтому главная задача при работе с JPEG — подобрать такой уровень качества, чтобы вес был небольшой и качество картинки было приемлемым (обычно, это диапазон от 60 до 70, но нужно тестировать на каждой картинке).

Изображение в формате JPEG с неоптимальной степенью сжатия

Пример изображения в формате JPEG с неоптимальной степенью сжатия. Качество: 10. Вес: 20 килобайт.

Первая картинка весит 20 килобайт. Это круто, очень мало, но для этого мы задали уровень качества 10 и картинка выглядит плохо.

Изображение в формате JPEG с оптимальной степенью сжатия

Пример изображения в формате JPEG с оптимальной степенью сжатия. Качество: 60. Вес: 65 килобайт.

Вторая картинка с уровнем качества 60 весит чуть больше первой — 65 килобайт, но выглядит уже хорошо.

Изображение в формате JPEG с минимальной степенью сжатия

Пример изображения в формате JPEG с минимальной степенью сжатия. Качество: 95. Вес: 169 килобайт.

Для третьей картинки мы задали уровень качества 95, из-за чего её вес стал 169 килобайт. Вторая и третья картинка внешне почти неразличимы, однако вторая картинка весит на 104 килобайта легче.

Таким образом, формат JPEG лучше подходит для:

  • полноцветных изображений, фотографий;
  • изображений, с плавным переходом яркости и контраста;
  • рисунков с большим количеством разноцветных деталей.

PNG (Portable Network Graphics)

PNG является относительно недавним форматом, который был введён как альтернатива для GIF-файлов.

PNG является форматом сжатия без потерь и позволяет сохранять изображения, в которых требуется особенная чёткость. Например, чертежи и печатный текст.

Формат имеет две вариации: PNG8 и PNG24. PNG8 может хранить лишь 256 цветов, а PNG24 использует уже более 16 миллионов цветов.

Главная особенность формата PNG — поддержка альфа-прозрачности, то есть каждому пикселю в отдельности можно задать свою степень прозрачности.

Изображение в формате PNG

Пример изображения в формате PNG (источник изображения: Wikimedia Commons)

Итак, формат PNG подходит для:

  • изображений с прозрачностью и полупрозрачностью;
  • когда необходима повышенная точность полноцветных изображений;
  • изображений с резкими переходами цветов.

WebP — новый формат, созданный и развиваемый с 2010 года компанией Google.

Главная цель этого проекта — ещё больше уменьшить вес при сохранении такого же качества.

Формат использует новый алгоритм сжатия, в котором искажения отличаются от искажений других форматов. Ухудшается детализация и структура, в то время как края остаются чёткими.

  • сжимает изображения без потерь лучше, чем PNG (на 26% по данным Google);
  • сжимает изображения с потерями лучше, чем JPEG (на 25–34% по данным Google);
  • поддерживает прозрачность (альфа-канал).

Иногда WebP сжимает изображение даже лучше, чем заявляет Google.

JPEG: 44 килобайт WebP: 26 килобайт. Если изображение не видно, значит ваш браузер не поддерживает формат WebP.

Ввиду относительной новизны формата, не все браузеры умеют с ним работать. На сегодняшний день WebP поддерживается только Chrome, Opera и Firefox.

Векторные форматы

GIF, JPEG, PNG, и WebP — растровые форматы, основанные на дискретном (пиксельном, точечном) представлении изображения, в то время как векторные форматы основаны на математических формулах (геометрическом представлении фигур). Подробнее о векторной графике можно прочитать в статье «Растровая и векторная графика».

SVG (Scalable Vector Graphics)

SVG переводится как — масштабируемая векторная графика. Формат существует с 1999 года.

Размер объектов SVG намного меньше размера растровых изображений, а сами изображения не теряют в качестве при масштабировании. В отличие от растровых форматов мы можем взаимодействовать с изображениями в формате SVG — при помощи CSS можно изменять параметры графики: цвет, прозрачность или границы, а при помощи JavaScript — анимировать изображение.

SVG поддерживается почти всеми браузерами за исключением Internet Explorer 8 и ниже, но и это можно решить подключением JavaScript-библиотек, например, SVGeezy.

Читайте также: