• ベストアンサー

byte配列をImageに変換する

現在Javaでネットワーク越しに画像データを送るプログラムを書いているのですが、byte配列に変換した画像データを、元の画像データに戻せなくて困っています。 もう少しプログラムよりにかくと、BufferdImageをbyte[]には変換できますが、逆ができません。 何かよい方法はないのでしょうか?お返事お待ちしております。

  • Java
  • 回答数2
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

画像フォーマットに詳しくないし、実験するのが面倒くさかったのでやらず。 ある程度の力があれば理解できると思うのでまぁいいや。 以下のコードを見てください。OutputStreamに入力したものがInputStream側で取り出せていますよね? http://ideone.com/DqOFW それさえわかれば、一撃でしょう。多分。 http://download.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#read%28javax.imageio.stream.ImageInputStream%29 #もっと簡単にできる手はあるかも。

lain_003
質問者

お礼

返事が遅くなってしまってすいません。 こんなAPIがあったんですね。おかげさまで解決できました。 ありがとうございます。

その他の回答 (1)

  • sainte
  • ベストアンサー率50% (10/20)
回答No.2

ObjectOutputStream+ObjectInputStreamが良いです。 ネットワーク用のストリームにラップするも良し、ByteArrayのストリームを利用してbyte[]にするも良しです。

lain_003
質問者

お礼

返事が遅くなってすいません。 オブジェクトを直接送るという方法があったんですね。気づきませんでした。 お返事ありがとうございます。

関連するQ&A

  • imageからbyteの変換方法

    画像ファイル(jpgやbmp)からByte配列に格納する事は可能なのですが image型をbyte型に格納する方法が解りません。 ファイルのときはFileStreamとBinaryReaderを使用して BinaryReader.ReadBytesで行っていたのですが 同じような間隔で変換する事は可能なのでしょうか? ご教授お願いいたします。 プログラムはVB 2005を使用しております。

  • int配列をbyte配列に変換

    MIDPアプリを作成している初心者です。 Image データを一旦端末のレコードストアに保存しておく為、 getRGB()で取得したint配列を、byte配列に変換しなくてはいけません。 ↓のように レコードストアに書き込むメソッドを書いてみました。 public void writeRecordStore( String name, Image image ) {     int width = image.getWidth();     int height = image.getHeight();     int[] pxData = new int[ width*height ];     byte[] byteData;     RecordStore rs = null;     try {         //画像をバイトデータに変換         image.getRGB( pxData, 0, width, 0, 0, width, height );         //レコードストアを開く         rs = RecordStore.openRecordStore( name, true );         //バイト配列に変換 ← ここがわからない                  //レコードの追加         rs.addRecord( byteData, 0, byteData.length );              } catch( Exception e ) {     } } int配列をbyte配列に変換する方法わかる方 ご教授の程お願いします。 また、まだコーディングに自信が無いので、文法のミスもご指摘頂けたらありがたいです。

    • ベストアンサー
    • Java
  • [VB.net] StringからByte配列への変換

    皆さんこんばんは。 最近VB.NET2000でVisual Basicをはじめたのですが、どうにもString型の値をByte配列へ変換するやり方が分かりません。 VB6.0だとByte配列にStringを代入するだけでいいそうなのですが、.NETで代入しようとすると『型"String"の値を"Byteの1次元配列"に変換できません』というビルドエラーが表れてしまいます。 CByte( Mid(str,i,1) ) CLng( Mid(str,i,1) ) 他にも上記コードのように一つずつ変換しようと試みたのですが、String中のある文字がワイドバイトらしく、System.InvalidCastExceptionが表れてしまいます。 ("『"を上下反転したような文字) ワイドバイトのStringを1バイトずつ区切ってByte配列やLong配列へ格納する手法というものはありませんでしょうか。 よろしくお願いします。

  • Cの構造体のデータのbyte配列をjavaのclassに入れるには

    サーバーからCの構造体のデータをbyte配列で受け取ったものをjavaのclassに入れるにはどうすればよいでしょうか? クライアントプログラムがCなら受け取ったデータをそのまま構造体にコピーすれば終わりなのですが(サーバーもクライアントもx86なのでendianを気にする必要が無い)、java で簡単に書く方法が分からないので、今はbyte配列から1バイトづつ読みだして、classのメンバーに代入しています。もっとスマートな書き方はないでしょうか?

  • byteをDBに格納

    sqlserver 2008 framework3.5 SP1 C# すみません。 C#初心者です。上の情報で十分ですか? いま、データをDBに格納したく奮闘しております。 まず、格納したいものは、以下のような16進数のデータです。 「1E0015・・・」 いまはbool配列に{0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1・・・}のデータを8個ずつ int配列に{30, 0, 5,・・・}と変換して byte配列に{1E,0,15・・・}と変換しています。 bool配列からbyte配列に変換する方法はありますでしょうか? また、byte配列のDBへの格納方法も合わせてお教えいただけると助かります。 よろしくおねがいします。

  • Byte配列をInputStreamに入れるには?

    urizakaです Byte配列に入力されたデータをInputStreamに入力する方法ってどうやるんでしたっけ? すみません、宜しくお願いします。

    • ベストアンサー
    • Java
  • BYTEについて―

    BYTEについて― わからない事がいろいろと有るのですが、 【1.データの受渡しについて。】 LPBYTE型に入っている32bitのBMP画像(pixel)を BYTE*型(pbyte)に代入する場合 pbyte = (BYTE*)pixel; このコードで問題ないのでしょうか? また、用意した受け皿のサイズを超えたデータを入れた場合、 配列の末尾に\0が入って残りは切り捨てられているのでしょうか? そして、これは正常に動作するやり方なのでしょうか? 【2.LPとは?】 LPBYTEはBYTEのポインタ型と聞きますが、 BYTE*とどう用法が違うのでしょうか?(LPシリーズ全般の疑問ですが) また、LPBYTEもやはり、末尾に\0が入って管理されているのでしょうか? 【3.宣言・定義・使い方について。】 現在、 BYTE* pbyte = new BYTE[10240]; 等と書いてBYTE配列を作っているのですが、 これは宣言と同時に定義している事になるのでしょうか? そして、newしている以上、手動でdeleteしなければならないのですよね? また、これ以外の定義方法も有るのでしょうか? 質問が多岐に渡っていてすいません、 どうも普通の配列と混同しているのか、 頭の中で疑問がグルグル回ってしまっていまして; よろしくお願いします。 っ;_ _)っ

  • VC++2010 大きい桁数をBYTE型配列に代入

    VC++2010 VC++2010 大きい桁数をBYTE型配列に代入する件について質問させていただきますがどう考えても変換する方法が思いつかなかったので質問させていただきました。 たとえば18000とかの大きい10進数の数値をBYTE型の配列に代入したいのですが どういうプログラミングをすればできるのかわかりませんでした。 よろしくお願いします BYTE型変数は 三つあり、また大きい桁数の最大値は16777216となります。まず大きい任意の桁数をみっつのBYTE型変数にわけていれる方式になります。 例:16777216を三つのBYTE型変数にいれると。。。 BYTE bValue1 = 255; BYTE bValue2 = 255; BYTE bValue3 = 255; よろしくお願いします

  • VB6.0 ADOでbyte型配列を Insertしたい

    始めて投稿させて頂きます。よろしくお願いします。 さて当方、VB6.0とADOを使ってSQL Serverに接続してデータのやりとりをするプログラムを開発しているのですが byte型配列に入っている値をADOを使って、Char型のフィールドに入れたいんです。 このような処理は可能でしょうか? いろいろと探してみたのですが、どうしてもわからずにほとほと困っております。 何か可能な方法があれば、ぜひよろしくお願いします。

  • 【JAVA】CharをByteに変換したい。

    JAVAで、CharをByteに変換したいです。 以下の様なメソッドを用意して通してたのですが -------------------------------------- public static byte[] Char2Bytes(char c){ int i = (int)c; return new byte[] { (byte)(i >> 8), (byte)(i & 0x00ff) }; -------------------------------------- 「a」などの場合、このメソッドを通すと「 a」となってしまいます。 他に変換する方法などないでしょうか? または、上記で「 a」とせず「a」にする方法はございますか? #byte[0]の中身が「0」であればの判定以外で

専門家に質問してみよう