调色图像所需的有效调色板

valid palette required for paletted images

本文关键字:有效 调色板 图像      更新时间:2023-10-16

当使用libpng编写使用调色板(PNG_COLOR_TYPE_PALETTE)的PNG图像时,我看到错误:

调色图像所需的有效调色板

造成这种情况的原因是什么?我该如何解决?

确保在调用png_write_info之前调用png_set_PLTE

例如:

// 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);