[
https://issues.apache.org/jira/browse/PDFBOX-4205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17045603#comment-17045603
]
Constantine Dokolas commented on PDFBOX-4205:
---------------------------------------------
The following body to {{LosslessFactory.createFromGrayImage()}} works fine:
{code:java}
int height = image.getHeight();
int width = image.getWidth();
int[] rgbLineBuffer = new int[width];
int bpc = image.getColorModel().getPixelSize();
ByteArrayOutputStream baos = new ByteArrayOutputStream(((width * bpc / 8) +
(width * bpc % 8 != 0 ? 1 : 0)) * height);
MemoryCacheImageOutputStream mcios = new MemoryCacheImageOutputStream(baos);
WritableRaster r = image.getRaster();
for (int y = 0; y < height; ++y) {
// for (int pixel : image.getRGB(0, y, width, 1, rgbLineBuffer, 0, width))
for (int pixel : r.getPixels(0, y, width, 1, rgbLineBuffer)) {
mcios.writeBits(pixel & 0xFF, bpc);
}
int bitOffset = mcios.getBitOffset();
if (bitOffset != 0) {
mcios.writeBits(0, 8 - bitOffset);
}
}
mcios.flush();
mcios.close();
return prepareImageXObject(document, baos.toByteArray(), image.getWidth(),
image.getHeight(), bpc, PDDeviceGray.INSTANCE);
{code}
> LosslessFactory alters image
> ----------------------------
>
> Key: PDFBOX-4205
> URL: https://issues.apache.org/jira/browse/PDFBOX-4205
> Project: PDFBox
> Issue Type: Bug
> Affects Versions: 2.0.7, 2.0.8, 2.0.9
> Environment: Ubuntu 16.04
> Reporter: Harry Dent
> Priority: Minor
> Attachments: image-2020-02-24-17-59-08-300.png, lossy.png,
> picture_of_text.png
>
>
> The attached grayscale png becomes lighter when run through the following
> code snippet:
> {code:java}
> BufferedImage image = ImageIO.read(new File("picture_of_text.png"));
> PDImageXObject xObject = LosslessFactory.createFromImage(new PDDocument(),
> image);
> BufferedImage lossy = xObject.getImage();
> ImageIO.write(lossy, "png", new File("lossy.png"));
> {code}
> The difference is easiest to spot by looking at the "S" in "41st". The loss
> in quality occurs in {{createFromImage()}} (rather than {{getImage()}}),
> which can be shown by embedding the {{PDImageXObject}} into a {{PDDocument}}
> and then saving this document to a file.
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]