для палитровых изображений требуется правильная палитра

0

При использовании libpng для записи PNG-изображения, использующего цветовую палитру (PNG_COLOR_TYPE_PALETTE), я вижу ошибку:

допустимая палитра, требуемая для изображений с палитрой

Что вызывает это и как я могу это исправить?

Теги:
libpng

1 ответ

0

Убедитесь, что вы вызываете png_set_PLTE перед вызовом png_write_info.

Например:

// Set the colour palette to use
unsigned paletteSize = ...;

assert(paletteSize <= PNG_MAX_PALETTE_LENGTH);

png_color* palette = (png_color*)png_malloc(png_ptr, paletteSize*sizeof(png_color));

for (unsigned p = 0; p < paletteSize; p++)
{
  png_color* col = &palette[p];
  col->red = ...;
  col->green = ...;
  col->blue = ...;
}

png_set_PLTE(png_ptr, info_ptr, palette, paletteSize);

png_write_info(png_ptr, info_ptr);

// ... png_write_image, png_write_end

png_destroy_write_struct(&png_ptr, &info_ptr);

png_free(png_ptr, palette);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню