私はGWTベースのWebアプリケーションで医用画像の表示と処理を行っています。問題はこのような種類の医学的画像は標準的な画像を持たず、巨大なbytearray(サイズ:18M以上)です。イメージのバイト配列を直接読み込んで、それを表示してさらに処理するためにクライアントに送る必要があります。画像の一部(32kb未満)を転送すると、クライアントはピクセルを通常表示します。GWT - ユーザーが画像上でピクセルレベルの処理を行うことができる、サーバーからクライアントへの医用画像の配信方法
エンコード:私は相手のソリューションなどを見つけたよう
[enter code hereERROR]javax.servlet.ServletContext log: Exception while dispatching incoming RPC call
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.ensureCapacity(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at 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 KBの制限があります。IE9にはこの制限がありません。
Client side:
-ImageService.java
-ImageServiceAsync.java
-WebImage.java (interface)
-ImageArray.java (store the image data from server)
Server side:
-ImageServiceImpl.java
Iがアクティブこの画像データ配信にボタンを用います。バックグラウンドでは、ImageServiceImplは、ディスクファイルから医用画像を読み取り、データ配列をクライアントに送信します。上記のように私が制限したように、画像データ全体を送ってもこのプロセスはうまくいかないでしょう。どのようにしてこのプロセスを成功裏に完了することができますか?一度ボタンをクリックするだけで、サーバーからクライアントへのデータ配列の多くの小さな部分(< 32kb)を連続的に配信する方法があるのだろうかと思います。だから私はそれを実行するために多くの小さな部分に画像を分割することができます。または、私が知らないこのタスクに役立ついくつかの他のメカニズムがあります。
画像処理を実行するためにHTML5要素でGWTを使用しました。 – OxyGen