首页 > 解决方案 > Java图像裁剪打破了libpng的PNG

问题描述

所以目前我正在使用C++代码将屏幕截图转储到磁盘。我在使用时读取它们Java以裁剪它们,然后将它们写回磁盘,以便C++将它们重新加载并应用图像算法(OpenCV)。

从 写回修改后的图像后Java,我收到以下错误C++

libpng error: PNG unsigned integer out of range

我的裁剪代码Java如下

private void cropImage(Path imageFilePath) throws IOException
{
    File imageFile = imageFilePath.toFile();
    BufferedImage bufferedImage = ImageIO.read(imageFile);
    BufferedImage subImage = bufferedImage.getSubimage(x, y, width, height);
    BufferedImage copiedImage = new BufferedImage(subImage.getWidth(), subImage.getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics graphics = copiedImage.createGraphics();
    graphics.drawImage(subImage, 0, 0, null);
    ImageIO.write(copiedImage, getExtension(imageFile.getName()), imageFile);
}

令人惊讶的是,如果我查看裁剪后的PNG内容,它在应用程序中看起来不错,Windows Photo但在libpng. 没有裁剪步骤,就没有libpng问题。PNG我的裁剪代码有什么问题吗?

标签: javac++windowsimage-processinglibpng

解决方案


推荐阅读