C/C++

Как редактировать png-файлы?

Здравствуйте. Как открыть файл с изображением в формате png и дописав туда данные, не потерять целостности формата. Вы сталкивались с таким?
Nowruzbek Shermetow
Nowruzbek Shermetow
508
Прочитать в буфер, отредактировать, перезаписать исходный файл.
Алмаз Шамсутдинов
Алмаз Шамсутдинов
1 065
Лучший ответ
для работы с изображением на нижнем уровне нужно знать спецификацию... а дальше пиши код

IHDR
Это самый первый из обязательных чанков. Важно запомнить, что он должен располагаться в самом начале документа. Состоит из 13 байт:
4 байта — ширина изображения
4 байта — высота изображения
1 байт — глубина цвета (bit depth)
1 байт — цветовая модель (color type)
1 байт — метод сжатия
1 байт — метод фильтрации
1 байт — метод чересстрочной развертки

Наиболее важными для нас являются 9 и 10 байты. Давайте рассмотрим их чуть подробнее.

Color type
Используемая цветовая модель. Может принимать следующие значения:

010 (0002) — grayscale
Самое первое и самое простое значение. Каждый одноканальный пиксель кодируется 1, 2, 4, 8 или 16-битовым целым числом, которое выражает уровень яркости белого цвета.
210 (0102) — RGB/TrueColor
Три канала: красный, зеленый и синий. Каждый из каналов (для одного пикселя) кодируется 8 или 16-битным числом.
310 (0112) — индексированные значения
Содержит индексы каналов, которые находятся в чанке PLTE. Количество битов: 1, 2, 4 или 8.
410 (1002) — grayscale и альфа-канал: для каждого пикселя указывается прозрачность
2 канала: оттенок серого и альфа-канал. Каждый канал кодируется 8 или 16 битами.
610 (1102) — RGBA
То же самое, что и RGB, только с добавлением альфа-канала, который отвечает за степень прозрачности.

ну и далее 300 страниц патентованного текста
https://www.w3.org/TR/PNG/
молча надо редактировать
Какие данные?
Nowruzbek Shermetow Не важно, просто открыв его в текстовом редакторе, что может произойти?