- - PR -
アプレットでの画像表示
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-02-10 17:03
いつも参考にさせていただいております
現在、ソケット通信でバイナリ型にて取得した画像ファイルを 一旦ローカルに保存後に、アプレットに表示するという処理を作成しております。 保存後に表示するアプレット自体は完成したのですが、 ローカルに保存せずに、アプレットに表示する方法というのはあるのでしょうか? アプレットのImageへ、直接バイナリ型を入力するようなことは可能なのでしょうか? ご存知のかた、どうかよろしくお願いします。 下がバイナリファイルを受信後に保存するソースです try { Socket soc = new Socket("localhost",9999); BufferedInputStream in = new BufferedInputStream(soc.getInputStream()); // 保存するディレクトリー FileOutputStream out = new FileOutputStream("C:\\myapplet\\imageTest.jpg"); byte[] buf = new byte[1024]; int len = 0; while( (len=in.read(buf)) != -1 ) { out.write(buf,0,len); } out.close(); in.close(); img = getImage(getCodeBase(),"imageTest.jpg"); } catch (Exception ex) { ex.printStackTrace(); } // 保存した画像を表示 Graphics g=getGraphics(); g.drawImage(img,10,10,this); | ||||
|
投稿日時: 2005-02-10 17:11
サーバ側にイメージを用意して、URLで直接指定してやるのが一番手っ取り早いと思います。
通信部分は特に意識しなくとも HTTP で取得してくれますよね。きっと。 | ||||
|
投稿日時: 2005-02-10 18:00
すいませんが仕様上、直接指定ができません。
それができたら苦労しなくていいんですがね。 | ||||
|
投稿日時: 2005-02-10 18:20
読み込みからbyte[]をつくって、ImageIconに渡してコンストラクト、
getImageするって方法があります。 Imageクラスはシリアライズできないのでイメージのシリアライゼーションが ほしいときにもImageIconクラスは使えますよ。 | ||||
|
投稿日時: 2005-02-15 17:48
うまくいきません
int len = 0; while( (len=in.read(buf)) != -1 ) { out.write(buf,0,len); } ImageIcon iIcon = new ImageIcon(buf); で画像ファイルをイメージアイコンにいれましたが、 アプレットでの表示。(getImageの方法がわかりません) 助けてください。 | ||||
|
投稿日時: 2005-02-15 21:34
そんなあなたのためのチュートリアル http://java.sun.com/docs/books/tutorial/uiswing/misc/icon.html | ||||
|
投稿日時: 2005-02-16 10:12
BufferedImage image = ImageIO.read(new ByteArrayInputStream( buf ) );
ImageIcon icon = new ImageIcon(image); 以前こんな感じで実装した記憶があります。 ご参考までに。 | ||||
|
投稿日時: 2005-02-16 18:32
ローカルから画像を一度、バイナリに変換して(URLをあえて使用せずに)
再度、画像ファイルとしてアプレットに表示しようとして 次のようなコードを書きました。 しかし、表示することができません。 どこかおかしいでしょうか?わかるかた、おねがいします。 import java.applet.*; import java.io.*; import java.awt.*; public class TestTestTest extends Applet { Image img =null; String S_PATH = "image1.jpg"; public void init() { try { FileInputStream in = new FileInputStream(S_PATH); ByteArrayOutputStream Baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(Baos); byte[] buf = new byte[64]; int len = 0; while( (len=in.read(buf)) != -1 ) { oos.write(buf,0,len); } Baos.flush(); img = Toolkit.getDefaultToolkit().createImage(Baos.toByteArray()); in.close(); Baos.close(); oos.close(); img = getImage(getCodeBase(),"image1.jpg"); } catch (Exception e){ System.out.println(e.toString()); } } public void paint(Graphics g){ g.drawString("画像を表示します",10,10); g.drawImage(img,20,10,this); } } | ||||
