HTML-рендеринг Java с использованием Cobra
В настоящее время я использую Cobra: Java HTML Renderer & Parser для рендеринга HTML-страницы, которая генерируется динамически на основе выбора пользователя в Java-приложении.
В моем приложении пользователь может выбирать из сотен элементов. Элементы отображаются в виде специальных уникальных цветных символов, и пользователь может выбрать более одного элемента.
Как только несколько элементов выбраны, их письменное описание динамически генерируется и форматируется для включения тегов css2 и html4 и загружается в HTML-панель Cobra для отображения.
Я хочу отобразить изображение символа с письменным описанием элемента в HTMLPanel.
Один из способов сделать это - сохранить BufferedImage в файл с помощью ImageIO.write, а затем включить HTML-тег img в мой динамически генерируемый HTML-документ, который загружается в HTMLPanel. К сожалению, это недопустимо, поскольку пользователь может выбрать сотни символов, что, в свою очередь, приведет к сотням вызовов ImageIO.write и невероятному снижению производительности моего приложения.
Альтернативным способом было бы преобразовать BufferedImage в кодировку Base64, а затем непосредственно поместить кодировку в документ HTML следующим образом.
<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />
К сожалению, HTMLPanel, похоже, игнорирует схему URI данных.
Кто-нибудь знает решение?
1 ответ
Используйте встроенный контейнер сервлетов, такой как Jetty. Укажите URL-адреса на "http://localhost:somePort/imageId", а затем обслужите эти URL-адреса из памяти.