Du bist nicht angemeldet.

1

14.03.2009, 12:40

[gelöst] Problem mit ImageTools (getBytes())

Hi zusammen!
Ich habe in meinem Grails-Projekt eine Image-Domain-Klasse und den entsprechenen Controller.
Nun habe ich das Grails-Plugin ImageTools 1.0.4 installiert und möchte damit Thumbnails aus den upgeloadeten Bildern generieren bzw. immer wenn ein Bild gespeichert wird, soll dazu ein Thumbnail generiert und gespeichert werden.

Meine Image Domain Class sieht so aus:
[java]class Image {
byte[] data
//String name

byte[] thumbnail

static constraints = {
//name()
data()
}
}
[/java]

Die "save"-Action im Image-Controller so:
[java]def save = {
def imageInstance = new Image(params)
def imageTool = new ImageTool()
imageTool.load(imageInstance.data)
imageTool.thumbnail(320)
imageInstance.thumbnail = imageTool.getBytes("JPEG") //Hier ist mein Problem!
if(!imageInstance.hasErrors() && imageInstance.save()) {
flash.message = "Image ${imageInstance.id} created"
redirect(action:show,id:imageInstance.id)
}
else {
render(view:'create',model:[imageInstance:imageInstance])
}
}
[/java]

Wenn ich meine Grailsapplikation starte und ein Bild uploade bekomme ich aber folgende Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
Error 200: groovy.lang.MissingMethodException: No signature of method: ImageTool.getBytes() is applicable for argument types: (java.lang.String) values: {"JPEG"}
 Servlet: grails
 URI: /grailsproject/grails/image/save.dispatch
    Exception Message: No signature of method: ImageTool.getBytes() is applicable for argument types: (java.lang.String) values: {"JPEG"} 
   Caused by: groovy.lang.MissingMethodException: No signature of method: ImageTool.getBytes() is applicable for argument types: (java.lang.String) values: {"JPEG"} 
   Class: GrailsAuthenticationProcessingFilter 
   At Line: [57] 


Aus der Fehlermeldung kann man schließen, dass angeblich die Methode getBytes() fehlt, oder? Aber eigentlich ist sie definitiv vorhanden. Ich habe extra im Quelltext des Plugins nachgeguckt und intelliJ (meine IDE) meckert auch nicht. Was kann ich nun tun, oder weiß jemand wo der Fehler liegt?

ACHTUNG, ich habe den Fehler gelöst!
Einfach die ImageTool.groovy editieren und die getBytes() Methode mit folgender Methode ersetzen:
[java] /**
* Returns the resulting image as a byte array.
*
* @param type file type for the image
* @see <a href="http://java.sun.com/products/java-media/jai/iio.html">Possible JAI encodings</a>
*/
public byte[] getBytes(String type) throws IOException {

ByteArrayOutputStream bos = new ByteArrayOutputStream();

JAI.create("encode", result, bos, type, null);

return bos.toByteArray()

}
[/java]

Danke schonmal im vorraus,
whitenexx

Anzeigen