В настоящее время я пытаюсь разделить изображение, и я наткнулся на стукач, и я понятия не имею, почему это происходит.
Вот быстрый псевдокодекс моей функции
- Считайте изображение, используя метод ImageIO.read (File file)
- Разделите изображения с помощьюМетод getSubimage () выглядит следующим образом:
bufferedImage.getSubimage (300, 300, bufferedImage.getWidth () / columns, bufferedImage.getHeight () / lines);
- Запишите его в каталог изображений, используя метод 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!");
}
}
Кажется, это не былоПроблема метода, поскольку это была проблема формата файла.С гифками это не сработало.С JPEG-файлами все работало нормально.
Может кто-нибудь объяснить, почему?
Спасибо!