File tree Expand file tree Collapse file tree 1 file changed +8
-11
lines changed
Expand file tree Collapse file tree 1 file changed +8
-11
lines changed Original file line number Diff line number Diff line change @@ -203,25 +203,22 @@ int main(int argc, char* argv[]) {
203203 // Get palette and color count
204204 png_get_PLTE (png_ptr, info_ptr, &palette, &num_palette);
205205
206- // Check palette color count validity
207- if (num_palette != 256 ) {
208- std::cerr << " PNG file " << argv[arg]
209- << " has lesser than 256 colors in palette."
210- << std::endl;
211- png_destroy_read_struct (&png_ptr, &info_ptr, NULL );
212- fclose (png_file);
213- return 1 ;
214- }
215-
216206 xyz_data = new unsigned char [768 + width * height];
217207
218208 // Create XYZ palette
219- for (size_t i = 0 ; i < 256 ; i++) {
209+ for (size_t i = 0 ; i < num_palette ; i++) {
220210 xyz_data[i * 3 ] = palette[i].red ;
221211 xyz_data[i * 3 + 1 ] = palette[i].green ;
222212 xyz_data[i * 3 + 2 ] = palette[i].blue ;
223213 }
224214
215+ // Create dummy palette entries, if PNG palette has less than 256 colors
216+ for (size_t i = num_palette; i < 256 ; i++) {
217+ xyz_data[i * 3 ] = 0 ;
218+ xyz_data[i * 3 + 1 ] = 0 ;
219+ xyz_data[i * 3 + 2 ] = 0 ;
220+ }
221+
225222 // Get image rows
226223 row_pointers = png_get_rows (png_ptr, info_ptr);
227224
You can’t perform that action at this time.
0 commit comments