मैंने पीडीएफ से छवियों को उत्पन्न करने के लिए BufferedImage क्लास का उपयोग किया है। मुझे नीचे दिए गए स्निपेट का उपयोग करके 8-बिट आरजीबीए मिल रहा है, लेकिन मैं इसे 16 बीपीसी आरजीबीए में बदलने में असमर्थ था।

int page = 0;
BufferedImage bim = new BufferedImage(100, 100, BufferedImage.TYPE_USHORT_565_RGB);
bim = pdfRenderer.renderImage(page);
String fileName = OUTPUT_DIR + "image-" + page + ".png";
ImageIOUtil.writeImage(bim, fileName, 1);
0
Bhuvaneswar Surasani 25 नवम्बर 2020, 12:50

1 उत्तर

सबसे बढ़िया उत्तर

16 बिट प्रति नमूना (या चैनल) BufferedImage बनाने और इसे PNG के रूप में संग्रहीत करने के लिए, आप निम्न कोड का उपयोग कर सकते हैं:

ComponentColorModel colorModel = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), true, false, Transparency.TRANSLUCENT, DataBuffer.TYPE_USHORT);
BufferedImage image = new BufferedImage(colorModel, colorModel.createCompatibleWritableRaster(100, 100), colorModel.isAlphaPremultiplied(), null);

if (!ImageIO.write(image, "PNG", new File("test.png"))) {
    System.err.println("Could not write PNG: " + image);
}

कोड से, मुझे लगता है कि आप पीडीएफबॉक्स का उपयोग कर रहे हैं। यदि आप PDFBox का उपयोग कर रहे हैं, तो आप ImageIO.write के बजाय ImageIOUtil.writeImage का उपयोग कर सकते हैं। लेकिन आप शायद डीपीआई को 1 से अधिक उचित पर सेट करना चाहते हैं...

यह भी ध्यान रखें कि आपके कोड में image = pdfRenderer.renderImage(page) छवि को बदल देगा, इसलिए आप उसका उपयोग नहीं कर सकते। इसके बजाय renderPageToGraphics(int, Graphics2D)विधि का उपयोग करके देखें:

ComponentColorModel colorModel = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), true, false, Transparency.TRANSLUCENT, DataBuffer.TYPE_USHORT);
BufferedImage image = new BufferedImage(colorModel, colorModel.createCompatibleWritableRaster(100, 100), colorModel.isAlphaPremultiplied(), null);

Graphics2D g = image.createGraphics();
try {
    pdfRenderer.renderPageToGraphics(page, g);
}
finally {
    g.dispose();
}

if (!ImageIOUtil.writeImage(image, test.png, 72))) {
    System.err.println("Could not write PNG: " + image);
}
0
Harald K 25 नवम्बर 2020, 16:03