这个用了好多次了,在blog上记录一下吧
for (uint j=0, t=0; j<real_line_bytes; ++j, t+=4)
{
real_ptr[j] = ((row_pointers[i][t+3]&0x3)<<6) | ((row_pointers[i][t+2]&0x3)<<4) |
((row_pointers[i][t+1]&0x3)<<2) | (row_pointers[i][t]&0x3);
}
}
//4bpp的情况
else if (real_bit_dep == 4)
{
for (uint j=0, t=0; j<real_line_bytes; ++j, t+=2)
real_ptr[j] = ((row_pointers[i][t+1]&0xF) << 4) | (row_pointers[i][t]&0xF);
}
memcpy(&buf[buf_offset], real_ptr, real_line_bytes);
buf_offset += real_line_bytes;
}
// free memory
png_destroy_read_struct(&png_ptr, &info_ptr, 0);
// close file
fclose(file);
}