Java Обрезка изображений прерывается PNG для libpng - PullRequest
1 голос
/ 25 февраля 2020

Так что в настоящее время я использую код 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 кодом обрезки?

...