GWT - Как доставить медицинское изображение с сервера на клиент, где пользователи могут выполнять некоторую обработку на уровне пикселей на изображении - PullRequest
0 голосов
/ 02 марта 2012

Я работаю над веб-приложением на основе GWT для отображения и обработки медицинских изображений. Проблема в том, что этот вид медицинского изображения не имеет стандартной пены и является огромным байтовым массивом (размер: более 18 м). Я должен непосредственно прочитать байтовый массив изображения и отправить его клиенту для отображения и дальнейшей обработки. Когда я передаю небольшую часть изображения (менее 32 КБ), клиент отображает пиксели нормально. Но когда я передаю изображение целиком, консоль выдает ошибку:

[введите код здесьERROR] javax.servlet.ServletContext log: исключение при отправке входящего вызова RPC

java.lang.OutOfMemoryError: Пространство кучи Java

at java.util.Arrays.copyOf (Неизвестный источник)

at java.util.Arrays.copyOf (Неизвестный источник)

at java.util.ArrayList.ensureCapacity (Неизвестный источник)

at java.util.ArrayList.add (Неизвестный источник)

на com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.append (ServerSerializationStreamWriter.java:583) ...

Это может быть ограничение размера передачи данных в GWT, так как я нашел другое решение, например:

кодировать массив байтов с помощью com.google.gwt.user.server.Base64Utils.toBase64 (byte []). Но этот метод не работает для IE 7. И IE8 имеет ограничение в 32 КБ. IE9 не имеет этого ограничения.

Клиентская сторона:

-ImageService.java

-ImageServiceAsync.java

-WebImage.java (интерфейс)

-ImageArray.java (сохранить данные изображения с сервера)

Сторона сервера:

-ImageServiceImpl.java

Я использовал кнопку, чтобы активировать доставку данных этого изображения. В фоновом режиме ImageServiceImpl считывает медицинское изображение из файла на диске и отправляет массив данных клиенту. Теперь, как ограничение, которое я упомянул выше, этот процесс не будет успешным, если я отправлю все данные изображения. Как я могу сделать, чтобы завершить этот процесс успешно? Интересно, есть ли способ непрерывной доставки множества мелких частей (<32 КБ) массива данных с сервера на клиент, когда я просто нажимаю кнопку один раз. Таким образом, я могу разделить изображение на множество маленьких частей, чтобы выполнить это. Или есть некоторые другие механизмы, полезные для этой задачи, о которых я не знаю. </p>

1 Ответ

0 голосов
/ 02 марта 2012

Я бы посмотрел на Map Tiler, похожий на способ, которым карты Google разбивают изображения и отображают их. Вот стартовое место http://www.maptiler.org/. Вот пример компании, которая сделала именно то, что вы пытаетесь сделать https://wiki.openmrs.org/display/docs/Google+Maps+Image+Viewer+Module

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...