java - 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
我的裁剪代码有什么问题吗?
解决方案
推荐阅读
- visual-studio - 移动选项卡或对内部窗口进行排序时,Visual Studio 2015 崩溃
- arrays - 使用指针数组在 C 中初始化二维数组
- css - 如何同步两个 CSS 动画时间
- javascript - 我可以基于 HTML 元素创建操作以使用 javascript 显示和隐藏 div 吗?
- php - 我的页面上有一个单词我需要搜索并替换它,但我的代码不起作用
- reactjs - process.env.REACT_APP_KEY 不适用于 api 调用
- logstash - grok/kv 过滤审计日志 logstash
- javascript - Evergreen 浏览器和用户代理列表
- xamarin.forms - Xamarin FreshMVVM PublicKeyToken=null not found'
- node.js - 如何让 Express JS 在服务器重新启动时保留局部变量?