У меня есть Буферизованное изображение и массив фигур, таких как кусочки головоломки. Я хочу вырезать эти фигуры из изображения. Я попробовал обрезать изображение, но он работает неправильно. То, что я сделал до сих пор:Режущие фигуры из изображения
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
Area area = areas[i][j];
int width = (int) area.getBounds2D().getWidth();
int height = (int) area.getBounds2D().getHeight();
pieces[i][j] = new BufferedImage(width, height, image.getType());
Graphics2D gr = pieces[i][j].createGraphics();
gr.setClip(area);
gr.drawImage(image, 0, 0, null);
gr.dispose();
try {
ImageIO.write(pieces[i][j], "png", new File("img/img" + i + "" + j + ".png"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
Он работает только для первой формы, затем он создает прозрачные изображения в качестве выходных данных.
Вы проверили, что пересечение объектов Area с границами изображений не пусто? (то есть, формы над изображением, а не где-то еще или пустое) – lbalazscs
Я думаю, что это поможет нам лучше понять вопрос, если вы покажете изображение, которое хотите клипнуть, и напечатайте пару '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' , Вы просто хотите извлечь суб-изображения, как думает @Glains, или вы действительно хотите скопировать одно изображение в несколько форм, как думает @lbalazscs? :-) – haraldK
Это определенно необходимо, чтобы вы добавляли детали по крайней мере некоторых фигур к вопросу. Первая форма, которая преуспевает, и несколько из них, которые этого не делают. Включите данные, которые создают форму, а также какие 'i' и' j'. – RealSkeptic