2012-04-12 2 views
1

Я использую подписанный java-апплет для загрузки изображения из файловой системы пользователя.
Затем я хочу отобразить это изображение на веб-сайте, на котором работает апплет.Пропустить изображение из java applet в html

Я знаю, как общаться между апплетом и JavaScript, но я использовал только строки и числа в качестве параметра.

Как обрабатывать объекты изображений и как их отображать на веб-сайте?

При необходимости я могу преобразовать формат в апплет в соответствии с JavaScript.

Редактировать:
Я передал объект Image из java в javascript с вызовом JSObject. Chrome игнорирует вызов и сбой в Firefox ..

ответ

3

Вы можете кодировать изображение как основание 64, передать его в JS как строку и использовать URL формы data:image/gif;, чтобы отобразить его на веб-странице. Вам нужно будет «сворачивать собственный» базовый 64-кодер или найти API, поскольку J2SE не имеет встроенного метода для преобразования.

В HTML может выглядеть примерно так.

<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. взято из Inline Images with Data URLs.

  1. На более поздних JREs (когда JAXB был введен) смотреть использовать DatatypeConverter.printBase64Binary(byte[]) что-то вроде этого:
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 это может сработать. у вас есть опыт работы с большими изображениями (1600x1200)? И работает ли это с другими форматами как gif? – Shylux

+0

1) Нет, но если вы не делаете это для анимации, все должно быть хорошо. 2) Я так считаю. –