gpt4 book ai didi

java - 关于 BufferedImage.getSubimage(int x, int y, int w, int h) 方法的指导?

转载 作者:搜寻专家 更新时间:2023-11-01 03:43:30 37 4
gpt4 key购买 nike

我目前正在尝试拆分图像,遇到了一个告密者,我不知道为什么会这样。

这是我的函数的快速伪代码分解

  1. 使用 ImageIO.read(File file) 方法读入图像
  2. 使用 getSubimage() 方法拆分图像,如下所示:

bufferedImage.getSubimage(300, 300, bufferedImage.getWidth()/列,bufferedImage.getHeight()/行);

  1. 使用 ImageIO.write() 方法将其写入图像目录。

问题是程序似乎没有正确读取 int x 和 int y 参数。例如,上面的参数为 300、300,但它似乎不是从坐标 300、300 裁剪,而是从 0、0 裁剪,无论您输入什么值。

任何建议!

谢谢!

顺便说一句,这是我的方法中的代码:

public static void splitImage(String imageFileName, String format, int rows, int columns) {
// Load the image file
File imageFile = new File(imageFileName);

try {
BufferedImage bufferedImage = ImageIO.read(imageFile);
// Split the image up into corresponding number of sub-images
BufferedImage[][] splitImages = new BufferedImage[rows][columns];

for (int i = 0; i < splitImages.length; i++) {
for (int j = 0; j < splitImages[i].length; j++) {
splitImages[i][j] = bufferedImage.getSubimage(bufferedImage.getWidth() / columns * i, bufferedImage.getHeight() / rows * j,
bufferedImage.getWidth() / columns, bufferedImage.getHeight() / rows);
}
}

System.out.println(bufferedImage.getWidth() / columns + "\n" + bufferedImage.getHeight() / rows);

splitImages[0][0] = bufferedImage.getSubimage(300, 300,
bufferedImage.getWidth() / columns * 2, bufferedImage.getHeight() / rows * 2);

// Write that into the images directory

for (int i = 0; i < splitImages.length; i++) {
for (int j = 0; j < splitImages[i].length; j++) {
imageName++;
ImageIO.write(splitImages[i][j], format, new File("images/" + imageName + "." + format));
}
}

ImageIO.write(splitImages[0][0], format, new File("images/" + imageName + "." + format));
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "The image file doesn't exist!");
}
}

看来不是方法的问题,而是文件格式的问题。使用 GIF,它不起作用。使用 JPEG,效果很好。

谁能解释一下为什么?

谢谢!

最佳答案

这是 Java 的一个错误。我相信它已在 JDK 7 中修复,但我不是 100% 确定(我认为实际修复已在 9 月的某个时候进行了审查)

http://bugs.sun.com/view_bug.do?bug_id=6795544

关于java - 关于 BufferedImage.getSubimage(int x, int y, int w, int h) 方法的指导?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756227/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com