powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Отображение изображения из BLOB графическим компонентом PrimeFaces.
11 сообщений из 11, страница 1 из 1
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681003
AK1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно отобразить изображения находящиеся в BLOB-ах графическим компонентом PrimeFaces <p:galleria>.

Вот реализация на данный момент -

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<p:dataGrid var="car" value="#{postController.cars}" columns="3" rows="12"   <!-- Получаем список cars  -->
                        paginator="true" rowsPerPageTemplate="9,12,15" 
                        currentPageReportTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} 
                        {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}">
                <p:column>
                    <p:panel header="#{car.autoMark}">
                        <h:panelGrid columns="1">
                            <h:outputText value="#{car.autoModel}" />
                            <p:galleria value="#{imageController.getImagesById(car.id)}" var="image" panelWidth="152" panelHeight="102" showCaption="false">   <!-- Получаем список изображений для конкретной car  -->
                                <p:graphicImage value="/TestImage?imageInBytes=#{image.imageInBytes}" alt="Image Description for #{image.id}" title="#{image.lot_id}" /> <!-- Преобразуем байты в изображения сервлетом  -->
                            </p:galleria>
                        </h:panelGrid>
                    </p:panel>
                </p:column>
</p:dataGrid>



Строка

Код: xml
1.
<p:graphicImage value="/TestImage?imageInBytes=#{image.imageInBytes}" alt="Image Description for #{image.id}" title="#{image.lot_id}" />



в браузере

Код: html
1.
<img id="j_idt19:1:j_idt27" src="/PROJECT/TestImage?imageInBytes=[B@2f0aadeb&;amp;pfdrid_c=true" alt="Image Description for 1" title="1">




Сейчас 2 проблемы:

1. Не отображаются изображения. Код сервлета - не знаю что тут не так.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
        response.setContentType("image/jpeg");
        try (OutputStream out = response.getOutputStream();) {
            byte[] imageInBytes = request.getParameter("imageInBytes").getBytes();
            response.setContentLength(imageInBytes.length);
            out.write(imageInBytes);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }




2. Компоненту <p:galleria> передается несколько объектов-изображений, но определяется только одно, при этом в следующем блоке dataGrid в котором свой компонент <p:galleria> со своими изображениями отображается второе изображение из первого компонента <p:galleria>, имхо не отрабатывает внутренний цикл, как исправить эту асинхронность?
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681016
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK1988,

Зачем вообще это надо делать?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
response.setContentType("image/jpeg");
try (OutputStream out = response.getOutputStream();) {
     byte[] imageInBytes = request.getParameter("imageInBytes").getBytes();
     response.setContentLength(imageInBytes.length);
     out.write(imageInBytes);
} catch (Exception ex) {
      ex.printStackTrace();
}



видно image.imageInBytes это byte[] почему сразу не писать
value="data:image/jpeg;base64,далее byte[] в base64"
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681021
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDvalue="data:image/jpeg;base64,далее byte[] в base64"
Потому что base64 раздувает объемы некисло.
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681029
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Не спорю, но с таким сервлетом, обьемы не сократятся
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681033
AK1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0FDAK1988,

Зачем вообще это надо делать?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
response.setContentType("image/jpeg");
try (OutputStream out = response.getOutputStream();) {
     byte[] imageInBytes = request.getParameter("imageInBytes").getBytes();
     response.setContentLength(imageInBytes.length);
     out.write(imageInBytes);
} catch (Exception ex) {
      ex.printStackTrace();
}



видно image.imageInBytes это byte[] почему сразу не писать
value="data:image/jpeg;base64,далее byte[] в base64"

Честно говоря, как сделать иначе не знаю.
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681043
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот это:
Код: java
1.
imageInBytes = request.getParameter("imageInBytes").getBytes();


В запрос приходит готовый массив #{image.imageInBytes} (фактически, адрес массива [B@2f0aadeb), значит, код должен быть примерно такой:
Код: java
1.
imageInBytes = (byte[])request.getParameter("imageInBytes");
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681044
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас полное непонимание HTTP GET и двоичных\текстовых данных.
Потому что из вот этого никак получить изображение не выйдет. :)
imageInBytes=[B@2f0aadeb
Зачем передавать целиком изображения на клиента, а потом опять на сервер, а потом опять на клиента это тоже загадка.
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681047
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на самом деле даже хуже, приходит адрес, приведженный к строке. Лучше переписать код сервлета, добывая ресурс по-человечески
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681053
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK1988,

У Вас есть image.id, вот его в сервлет и передавайте, а image.id находите картинку и клиенту передаете
<p:graphicImage value="/TestImage?imageId=#{image.id" alt="Image Description for #{image.id}" title="#{image.lot_id}" />
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681287
AK1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотрю на код - может неделя поиска решения через гугл сказались. Сразу делал полную выборку изображений, добавлял в коллекцию, а в геттере выборку из коллекции через ид лота, теперь напрямую

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
public class ImageController implements Serializable {

    ArrayList<Image> images;

    public ImageController() {
    }
    public ArrayList<Image> getImages(int id) {

        images = new ArrayList<>();
        String sql = "SELECT * FROM image WHERE lot_id='" + id + "'";

        try (Connection conn = Database.getConnection();
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery(sql)) {
            while (rs.next()) {
                Image image = new Image();
                image.setId(rs.getInt("id"));
                image.setUser_id(rs.getInt("user_id"));
                image.setLot_id(rs.getInt("lot_id"));
                image.setImageInBytes(rs.getBytes("image"));

                images.add(image);
            }
        } catch (SQLException ex) {
            System.out.println(ex);
        }
        return images;
    }



Код: xml
1.
2.
3.
                            <p:galleria value="#{imageController.getImages(car.id)}" var="image" panelWidth="152" panelHeight="102" showCaption="false">
                                <p:graphicImage value="" alt="Image Description for #{image.id}" title="#{image.lot_id}"/>
                            </p:galleria>



Скажите, как лучше реализовать отображение изображения в value="" компонента <p:graphicImage>?
...
Рейтинг: 0 / 0
Отображение изображения из BLOB графическим компонентом PrimeFaces.
    #38681362
AK1988
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так как посоветовали, для отображения пользовался классом ImageIO. Спасибо большое, на многих форумах задавал вопрос, но помогли именно тут и быстрее всех.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Отображение изображения из BLOB графическим компонентом PrimeFaces.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]