在Java

时间:2018-11-06 06:28:46

标签: image-processing java-8 bufferedimage dpi image-quality

我正在使用Java缓冲图像裁剪图像。问题在于裁剪后的图像在DPI方面质量下降。例如,如果父图像的DPI为200,则裁切后的图像DPI减小为96。因此,我失去了OCR精度。

以下是我正在使用的代码段,以获取裁剪后的缓冲图像。

BufferedImage cropImage( BufferedImage image, final int[] topLeft, int width, int height )
{
    int x = Math.max( topLeft[CoOrdinate.X.getValue()], image.getMinX() );
    int y = Math.max( topLeft[CoOrdinate.Y.getValue()], image.getMinY() );

    int imageWidth = image.getWidth();
    int imageHeight = image.getHeight();

    width = ( x + width ) > imageWidth ? imageWidth - x : width;
    height = ( y + height ) > imageHeight ? imageHeight - y : height;

    return image.getSubimage( x, y, width, height );
}

然后我使用ImageIO

保存它
 File saveImage( String filePath, BufferedImage image )
{
    String formatName = FilenameUtils.getExtension( filePath );
    File croppedFile = new File( filePath );
    try {
        ImageIO.write( image, formatName,croppedFile );
        return croppedFile;
    } catch ( IOException e ) {
        LOG.error( "IO Exception occured while saving a buffered image" );
        throw new FileHandlingException( "IO Exception occured while saving a buffered image", e );
    }
}

如何在不损失DPI质量的情况下裁剪图像?我看到了Image Resizing的许多解决方案,并且我知道调整大小会降低质量。但是裁剪,保留DPI应该很简单吧?

编辑:

ImageMagick的农作物正是我所需要的。但是我将不得不使用来自Java的命令行。现在对我来说不是一个选择。

0 个答案:

没有答案