das übersteigt im Moment meine Java Kenntnisse und ich weiß auch nicht recht wo nachlesen (wäre auch um Tipp dankbar wo man so etwas lesen kann):
Ich muss folgende Methode aufrufen:
Code:
public void run(Operation pOperation,
java.lang.Object... images)
Ansich kein Problem, aber ich habe eine variable Menge an images. Diese befinden sich in einer List (ArrayList).
Wie schaffe ich es nun die Elemente dieser List zu übergeben?
Code:
run(Operation pOperation, ArrayList);
funktioniert natürlich nicht. Eine Methode zum übergeben einzelner Bilder (dann könnte ich es mit einer Schleife machen) gibt es leider auch nicht: ImageCommand (The im4java Library)
Naja, genau genommen könnte man der Methode schon nur ein einzelnes Bild übergeben, würde also funktionieren. Du könntest aber auch auf deiner liste toArray() aufrufen und eben dann das Array übergeben!
Nein, das habe ich versucht und haut in meinem Fall einfach nicht hin. Vermutlich muss ich es genauer beschreiben. Ich übergebe nämlich an letzter Stelle noch einmal einen String. Also so in der Art funktioniert es:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: [Ljava.awt.image.BufferedImage; is an unsupported image-type
aus.
Ich weiß überhaupt nicht, wie ich das Problem angehen soll Würde es vielleicht helfen imageName auch noch hinten an das Array zu hängen? Aber da habe ich Probleme, weil das Array ja schon voll ist.
wieso hängst du auf einmal noch einen String hinten dran? Die Methode aus deinem ersten Post verlangt
doch nur "images", also das Array. Dafür hat eRaaa dir ja die Lösung gezeigt.
Ich hänge einen String ran, weil ich es so machen muss. Die Buffered Images sind die Bilder, die von ImageMagick umgewandelt werden müssen und der String ist dann der Dateiname in den die Bilder geschrieben werden.
Ich glaube schon, weil eben imageName ein String ist und die anderen BufferedImage. Oder geht das doch irgendwie?
Ich bekomme so langsam das Gefühl, dass es zwar möglich ist Buffered Images zu übergeben, aber die Klasse nicht wirklich dafür geschrieben wurde. Zu aller Not müsste ich halt die Buffered Images erst auf die Platte schreiben und dann kann ich diese auch als String (eben der Pfad zu den Bildern) übergeben.
classImageContainer{List<BufferedImage> list;// Beinhaltet alle BilderString fileName;// Der Name der DateiList<BufferedImage>getImages(){return list;}}
Dann kannst du einfach das Objekt übergeben:
Java:
voidmethod(ImageContainer ic){for(BufferedImage bi : ic.getImages()){...}}
Ich würd sagen, du solltest am besten erstmal nachschaun was für Objekte diese Klasse denn da haben will. Wenn es BufferedImages sein müssen, dann musst du das eine Bild wohl noch einlesen und in deine Liste speichern. Wenn es Dateinamen sein müssen, wirst du nich drum rumkommen die BufferedImages zu speichern (oder eine andere Lib zu verwenden). Wenn beides geht, siehe raiL. Wenns ganz anders is... nochmal schreiben
Dann musst du natürlich darauf achten das die Reihenfolge der Namen mit denen der Bilder übereinstimmt. Aber ich denke das sollte dir erstmal weiterhelfen.
Ja, ich habe es nun so geschafft: Ich habe die Datei, die ich per String übergeben muss (@Illuvatar: wie erklärt kann ich es nicht einlesen, da es nicht existiert. Der String ist nur für den künftigen Dateinamen) an den Platzhalter übergeben und dann konnte ich die BufferedImages einfach per Array übergeben.