2014-11-02 62 views
0

需要時使用libpng編寫使用調色板(PNG_COLOR_TYPE_PALETTE)PNG圖像有效的調色板,我看到的錯誤:爲調色板圖像

valid palette required for paletted images

什麼原因造成這一點,我怎麼能解決這個問題?

回答

0

確保您在致電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);