fix reduced image width calc

This commit is contained in:
Artem Pavlenko 2012-02-22 17:16:07 +00:00
parent 8568c62e8e
commit 199adc17d0

View file

@ -428,7 +428,7 @@ void save_as_png8_oct(T1 & file, T2 const& image, const unsigned max_colors = 25
else if (palette.size() == 1)
{
// 1 color image -> write 1-bit color depth PNG
unsigned image_width = (int(0.125*width) + 7)&~7;
unsigned image_width = width > 7 ? (int(0.125*width) + 1)&~1 : 1;
unsigned image_height = height;
image_data_8 reduced_image(image_width,image_height);
reduce_1(image,reduced_image,trees, limits, alphaTable);
@ -441,7 +441,7 @@ void save_as_png8_oct(T1 & file, T2 const& image, const unsigned max_colors = 25
else
{
// <=16 colors -> write 4-bit color depth PNG
unsigned image_width = (int(0.5*width) + 3)&~3;
unsigned image_width = width > 3 ? (int(0.5*width) + 3)&~3 : 4;
unsigned image_height = height;
image_data_8 reduced_image(image_width,image_height);
reduce_4(image, reduced_image, trees, limits, TRANSPARENCY_LEVELS, alphaTable);
@ -478,7 +478,7 @@ void save_as_png8(T1 & file, T2 const& image, T3 const & tree,
else if (palette.size() == 1)
{
// 1 color image -> write 1-bit color depth PNG
unsigned image_width = (int(0.125*width) + 7)&~7;
unsigned image_width = width > 7 ? (int(0.125*width) + 1)&~1 : 1;
unsigned image_height = height;
image_data_8 reduced_image(image_width, image_height);
reduced_image.set(0);