Ich versuche, mehrere Bilder mit Java zu einem größeren Bild zusammenzufügen. Die übergebenen Bilder haben alle die Maße Höhe 127 x Breite 293. Die Idee ist, dass eine Reihe von Bildern an die Methode übergeben werden, und die Methode nimmt die Bilder und baut sie zu einem anderen größeren Bild zusammen. Es wird ein Layout für das größere Bild geben, in das insgesamt 12 mögliche Bilder eingegeben werden können, die gleichmäßig verteilt sind (2 Reihen mit je 6 Bildern, die sich nicht überlappen). Wenn weniger als 12 Bilder eingegeben werden, werden nur die ersten Leerstellen gefüllt, der Rest des Bildes bleibt weiß, da der Hintergrund weiß sein soll. Wenn ich das Programm ausführe, wird das größere Bild gedruckt, aber es wird nur das erste Feld gefüllt, das das erste Bild oben links zeigt, unabhängig davon, wie viele Bilder eingegeben werden. Außerdem hat der Hintergrund eine rosafarbene Färbung anstelle des vorgesehenen weißen Hintergrunds. Ich bin nur ein Anfänger in Java, also versuche ich, mich durch einige dieser Lernschwierigkeiten zu arbeiten. Haben Sie einen Rat für mich, wie ich mein Problem lösen kann? (Code ist unten als Referenz kopiert) Danke!
public class ImagesCombine {
public String BuildImgs (File[] imgs)throws IOException {
int arsize = imgs.length;
File path = new File("Z:/JAVAFiles/Images/");
BufferedImage page = new BufferedImage(620,900,BufferedImage.TYPE_INT_ARGB);
Graphics2D paint;
paint = page.createGraphics();
paint.setPaint(Color.WHITE);
paint.fillRect ( 0, 0, page.getWidth(), page.getHeight() );
paint.setBackground(Color.WHITE);
String tmpname = "";
for (int i=0;i<imgs.length;i++){
if(i==0){
Image img0 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img0,0,0,null);
paint.dispose();
}
if(i==1){
Image img1 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img1,323,0,null);
paint.dispose();
}
if(i==2){
Image img2 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img2,0,142,null);
paint.dispose();
}
if(i==3){
BufferedImage img3 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img3,323,142,null);
paint.dispose();
}
if(i==4){
BufferedImage img4 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img4,0,284,null);
paint.dispose();
}
if(i==5){
BufferedImage img5 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img5,323,284,null);
paint.dispose();
}
if(i==6){
BufferedImage img6 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img6,0,426,null);
paint.dispose();
}
if(i==7){
BufferedImage img7 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img7,323,426,null);
paint.dispose();
}
if(i==8){
BufferedImage img8 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img8,0,568,null);
paint.dispose();
}
if(i==9){
BufferedImage img9 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img9,323,568,null);
paint.dispose();
}
if(i==10){
BufferedImage img10 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img10,0,710,null);
paint.dispose();
}
if(i==11){
BufferedImage img11 = ImageIO.read(new File(path, imgs[i].getName()));
paint.drawImage(img11,323,710,null);
paint.dispose();
}
}
String outpath = "Z:\\JAVAFiles\\" + imgs[0].getName().substring(0,16) + ".jpg";
OutputStream outfile = new FileOutputStream(outpath);
JPEGImageEncoder encoder2 = JPEGCodec.createJPEGEncoder(outfile);
encoder2.encode(page);
outfile.close();
return("Success");
}
}