0

我正在使用 PDFBox(PDF 到 BufferedImage)将输入文件(PDF,TIFF)转换为输出(TIFF)文件,并使用十二只猴子通过使用带有 IIOImage 的 Imagewriter 调整大小来将缓冲图像转换为 Tiff 文件。文件正在转换,但图像质量下降。在将图像类型 BufferedImage.TYPE_BYTE_GRAY 更改为 BufferedImage.TYPE_BYTE_BINARY 后,文件上的文本荧光笔丢失了。

下面是使用的代码。如何在不损失质量的情况下转换图像?

我正在将图像文件大小 1648*2338 转换为 200 dpi,我想将光度解释设置为 min_is_white 但无法解决我的问题。

File inputFile = new File(inputImagePath);
BufferedImage inputImage = ImageIO.read(inputFile);

final int imageType = BufferedImage.TYPE_BYTE_BINARY;

// creates output image
BufferedImage outputImage = new BufferedImage(scaledWidth, scaledHeight,imageType);

// scales the input image to the output image
Graphics2D g2d = outputImage.createGraphics();
g2d.drawImage(inputImage, 0, 0, scaledWidth, scaledHeight, null);
g2d.dispose();

// writes to output file                    
final List<Entry> entries =new ArrayList<Entry>();
entries.add(new TIFFEntry(TIFF.TAG_X_RESOLUTION, new Rational(200)));
entries.add(new TIFFEntry(TIFF.TAG_Y_RESOLUTION, new Rational(200)));
entries.add(new TIFFEntry(TIFF.TAG_PHOTOMETRIC_INTERPRETATION, TIFF.TYPE_SHORT, 0));
final IIOMetadata tiffImageMetadata =new TIFFImageMetadata(entries);

ImageWriter writer = ImageIO.getImageWritersByFormatName("tiff").next();
FileImageOutputStream fio = new FileImageOutputStream(new File(outputImagePath));
ImageWriteParam params = writer.getDefaultWriteParam();
params.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
fio.setByteOrder(ByteOrder.LITTLE_ENDIAN);
IIOMetadata metadata = writer.getDefaultImageMetadata(new ImageTypeSpecifier(outputImage), params);


writer.setOutput(fio);

IIOImage iioimage = new IIOImage(outputImage, null, tiffImageMetadata);

writer.write(null, iioimage, params);
fio.close();
writer.dispose();
4

0 回答 0