Javaを使用して医療機器と私のPCを接続しています。データ転送は正常に動作しています。問題はコンテンツ(String)と一緒にあり、データには4つのJPEG画像も含まれています。ストリーム全体がutf-8でエンコードされます。問題は、jpegのデータを抽出することができても、正しい形式でファイルに保存できないことです。私は、配列_tmpにバイトのデータを格納していバイトシーケンスをJavaのjpegファイルに変換する
私は周りを見回していると(それがFFD8で始まり、FFD9で終わることに)データが正常に見えます。私が試してみました次
1)私はその後、試してみました
ファイルを開こうとするだけで
FileOutputStream _fos = new FileOutputStream(_filename);
_fos.write(_image_string.getBytes());
_fos.flush()
_fos.close();
は、私は次のエラーを取得するファイルにバイトを書き込み次のようにBufferedImageを使用する:
BufferedImage _bi = ImageIO.read(new ByteArrayInputStream(_tmp));
File _image = new File(_filename);
ImageIO.write(_bi,"jpg",_image);
このため、以下の例外が発生しました。
java.lang.IllegalArgumentException: image == null!
at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(Unknown Source)
at javax.imageio.ImageIO.getWriter(Unknown Source)
データ形式のスペックは以下の貼り付けられます(これはBMPデータを言及していても - ドキュメントは明らかにJPEG形式でそのに言及)。
私は、これは何かを持って実現エンコーディングと一緒に。ちょうどそれを把握することができません。どんな指針も大変ありがとうございます。
"...ストリーム全体が... UTF-8でエンコードされています"。それは意味をなさない、JPEGはバイナリ形式であり、文字形式ではないので、utf-8として正しくエンコードすることはできません。 –
端末を開いて(Linuxを実行しているように見えます)、 "file"と入力すると、何が表示されますか? –
henrikenblom
@JamesKPolk utf-8エンコーディングは、ドキュメントのインターフェイス製品で言及されています。新しいString(_bytes、 "UTF-8")を使用してデータを文字列に変換すると、うまく動作します。しかし、ファイルにjpegデータを書き込むと、上記のエラーが発生します。バイトデータは、70 70 68 56 ...... 70 70 68 57(FFD * ... FFD9)である。どのように私は何らかのエンコードの問題があると感じました。 –