Python サーバーで PIL イメージ文字列を作成します。
frame = cv.CaptureFromCAM(0)
image = Image.fromstring('RGB', cv.GetSize(frame), frame.tostring(), 'raw', 'BGR')
buffer = cStringIO.stringIO()
image.save(buffer,'JPEG')
udptransmit(buffer.getvalue())
送信された画像文字列を読み取って jpeg を再構築しようとしている Java クライアントがあります。ただし、これは機能していないようです。確認のためだけに Python クライアントを作成しました。pygame の load メソッドの呼び出しを使用して、jpeg を正しく再構築できます。Python から送信される文字列には、文字 6:10 = JFIF が含まれています。これは正しい形式です (Python の imghdr モジュールでも認識されます。Java では、試してみました
受信した文字列のバイト コンテンツをファイルに書き込み、拡張子 .jpeg を付けて名前を付けるだけです。ファイルは有効な jpeg ではありません。
ImageIO
文字列からバイトを読み取るために使用します。これにより、ヌル イメージが生成されます。ImageReaderByFormat('JPEG')
これでバイトをフェッチして解析しようとしました。Image is not a JPEG, starts with 0x...
これにより、「 」というエラーが表示されます
Pythonが文字列を有効なjpegとして認識し、Javaが認識しない理由が本当にわかりません。この 2 つは異なる jpeg デコーダーを使用していますか? たとえそうであっても、文字列を検証または拒否するべきではありませんか?