Java图像裁剪为libpng中断PNG

Java图像裁剪为libpng中断PNG,java,c++,windows,image-processing,libpng,Java,C++,Windows,Image Processing,Libpng,因此,目前我正在使用C++code将屏幕截图转储到磁盘。我使用Java读取它们以进行裁剪,然后将它们写回磁盘,这样C++就可以将它们重新加载并应用图像算法() 在从Java写回修改后的图像后,我在C++中得到了以下错误: libpng error: PNG unsigned integer out of range 我在Java中的裁剪代码是: 令人惊讶的是,如果我查看裁剪的PNG,它在Windows照片应用程序中看起来很好,但在libpng中不起作用。没有裁剪步骤,就不会有libpng问题。

因此,目前我正在使用
C++
code将屏幕截图转储到磁盘。我使用
Java
读取它们以进行裁剪,然后将它们写回磁盘,这样
C++
就可以将它们重新加载并应用图像算法()

在从
Java
写回修改后的图像后,我在
C++
中得到了以下错误:

libpng error: PNG unsigned integer out of range
我在
Java
中的裁剪代码是:


令人惊讶的是,如果我查看裁剪的
PNG
,它在
Windows照片
应用程序中看起来很好,但在
libpng
中不起作用。没有裁剪步骤,就不会有
libpng
问题。我的<代码> PNG <代码>裁剪代码?< /p>为什么跳过所有的环而不裁剪OpenCV中的图像,然后从裁剪图像中进行?在其他应用程序中,可能问题是使用LBPNG的C++代码吗?可能相关:@ RealSkypTe:当我使用C++代码> OpenCV < /Cube图像处理C++时,我不会碰到这个错误:为什么跳过所有这些环而不在OpenCV中裁剪图像,然后从裁剪图像中进行?因为它在其他应用程序中工作,也许问题是你使用LBPNG的C++代码?可能相关:@ RealSistpTy:当我使用C++代码> OpenCV < /Cord>图像处理时,我不犯这个错误:
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);
}