2012-04-12 8 views
1

Ich verwende ein signiertes Java-Applet, um ein Bild aus dem Dateisystem des Benutzers zu laden.
Dann möchte ich dieses Bild auf der Website anzeigen, wo das Applet ausgeführt wird.Bild von Java-Applet zu HTML übergeben

Ich weiß, wie zwischen Applet und JavaScript zu kommunizieren, aber ich habe nur Zeichenfolgen und Zahlen als Parameter verwendet.

Wie gehe ich mit Bildobjekten um und wie zeige ich sie auf der Website an?

Bei Bedarf kann ich das Format im Applet auf das JavaScript umwandeln.

Bearbeiten:
Ich übergab das Image-Objekt von Java zu Javascript mit einem Aufruf von JSObject. Chrome ignoriert den Anruf und Firefox crash ..

Antwort

3

Sie können das Bild als Base 64 codieren, es an JS als String übergeben und die Formular-URL data:image/gif; verwenden, um es auf der Webseite anzuzeigen. Sie müssen Ihren eigenen Basis-64-Encoder "rollen" oder eine API finden, da J2SE keine eingebaute Methode für die Konvertierung hat.

Es könnte so etwas in der HTML aussehen.

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/ 
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp 
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" 
width="16" height="14" alt="embedded folder icon"> 

E.G. genommen von Inline Images with Data URLs.

  1. Auf späteren JREs (einmal JAXB eingeführt wurde) aussehen DatatypeConverter.printBase64Binary(byte[]) etwas wie folgt zu verwenden:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
try { 
    ImageIO.write(image, "png", baos); 
} catch (IOException e) { 
    showError(e); 
    e.printStackTrace(); 
} 
String imageString = "data:image/png;base64," + 
    DatatypeConverter.printBase64Binary(baos.toByteArray()); 
+0

hmm das könnte funktionieren. Hast du Erfahrung mit der Leistung für große Bilder (1600x1200)? Und funktioniert das mit anderen Formaten als gif? – Shylux

+0

1) Nein, aber wenn es nicht für die Animation gemacht wird, sollte es in Ordnung sein. 2) Ich glaube schon. –