mirror of
https://github.com/michaelrsweet/pdfio.git
synced 2025-02-18 18:02:51 +01:00
Fix image writing issues for pdfioFileCreateImageObjFromData (Issue #15)
This commit is contained in:
parent
3e0507ba6c
commit
2cc4789cf6
@ -1694,7 +1694,8 @@ pdfioFileCreateImageObjFromData(
|
||||
pdfioDictSetNumber(dict, "Width", width);
|
||||
pdfioDictSetNumber(dict, "Height", height);
|
||||
pdfioDictSetNumber(dict, "BitsPerComponent", 8);
|
||||
pdfioDictSetBoolean(dict, "ImageMask", true);
|
||||
pdfioDictSetName(dict, "ColorSpace", "DeviceGray");
|
||||
pdfioDictSetName(dict, "Filter", "FlateDecode");
|
||||
|
||||
if ((decode = pdfioDictCreate(pdf)) == NULL)
|
||||
{
|
||||
@ -1703,7 +1704,7 @@ pdfioFileCreateImageObjFromData(
|
||||
}
|
||||
|
||||
pdfioDictSetNumber(decode, "BitsPerComponent", 8);
|
||||
pdfioDictSetNumber(decode, "Colors", num_colors - 1);
|
||||
pdfioDictSetNumber(decode, "Colors", 1);
|
||||
pdfioDictSetNumber(decode, "Columns", width);
|
||||
pdfioDictSetNumber(decode, "Predictor", _PDFIO_PREDICTOR_PNG_AUTO);
|
||||
pdfioDictSetDict(dict, "DecodeParms", decode);
|
||||
@ -1746,6 +1747,7 @@ pdfioFileCreateImageObjFromData(
|
||||
pdfioDictSetNumber(dict, "Width", width);
|
||||
pdfioDictSetNumber(dict, "Height", height);
|
||||
pdfioDictSetNumber(dict, "BitsPerComponent", 8);
|
||||
pdfioDictSetName(dict, "Filter", "FlateDecode");
|
||||
|
||||
if (color_data)
|
||||
pdfioDictSetArray(dict, "ColorSpace", color_data);
|
||||
|
23
testpdfio.c
23
testpdfio.c
@ -772,7 +772,10 @@ write_alpha_test(
|
||||
if (i > 2)
|
||||
{
|
||||
// Add alpha channel
|
||||
*bufptr++ = (unsigned char)((x + y) / 2);
|
||||
if (x < 112 || x >= 144 || y < 112 || y >= 144)
|
||||
*bufptr++ = (unsigned char)((x - 128) * (y - 128));
|
||||
else
|
||||
*bufptr++ = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -792,7 +795,10 @@ write_alpha_test(
|
||||
if (i > 2)
|
||||
{
|
||||
// Add alpha channel
|
||||
*bufptr++ = (unsigned char)((x + y) / 2);
|
||||
if (x < 112 || x >= 144 || y < 112 || y >= 144)
|
||||
*bufptr++ = (unsigned char)((x - 128) * (y - 128));
|
||||
else
|
||||
*bufptr++ = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -817,7 +823,10 @@ write_alpha_test(
|
||||
if (i > 2)
|
||||
{
|
||||
// Add alpha channel
|
||||
*bufptr++ = (unsigned char)((x + y) / 2);
|
||||
if (x < 112 || x >= 144 || y < 112 || y >= 144)
|
||||
*bufptr++ = (unsigned char)((x - 128) * (y - 128));
|
||||
else
|
||||
*bufptr++ = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -828,7 +837,7 @@ write_alpha_test(
|
||||
printf("pdfioFileCreateImageObjFromData(num_colors=%u, alpha=%s): ", (unsigned)num_colors, i > 2 ? "true" : "false");
|
||||
if ((images[i] = pdfioFileCreateImageObjFromData(pdf, buffer, 256, 256, num_colors, NULL, i > 2, false)) != NULL)
|
||||
{
|
||||
puts("PASS");
|
||||
printf("PASS (%u)\n", (unsigned)pdfioObjGetNumber(images[i]));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -877,9 +886,9 @@ write_alpha_test(
|
||||
"DeviceGray",
|
||||
"DeviceRGB",
|
||||
"DeviceCMYK",
|
||||
"DeviceGray + Alpha",
|
||||
"DeviceRGB + Alpha",
|
||||
"DeviceCMYK + Alpha"
|
||||
"DevGray + Alpha",
|
||||
"DevRGB + Alpha",
|
||||
"DevCMYK + Alpha"
|
||||
};
|
||||
|
||||
snprintf(iname, sizeof(iname), "IM%d", i + 1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user