2

フォーラムの良き友人。

私はたくさん検索してきましたが、画像をシリアル化して Android の文字列に渡す方法を見つけることができませんでした。

そうではないかもしれませんが、誰かが知っていて私に知らせたいと思っているなら、私はとても感謝しています!.

4

3 に答える 3

1

java.awt.Imageクラスはありません(実装されていません)がjava.io.Serializablejavax.swing.ImageIconあります。このため、次のようにシリアル化できます。

ImageIcon myImage; // declare somewhere
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(myImage);
byte[] theBytes = baos.toByteArray();
StringBuffer buf = new StringBuffer();
for (byte b : theBytes) {
  buf.append((char) b); // cast to char, then append
}
String theString = b.toString();

これを元に戻す方法はあなたにお任せしますが、ここにヒントがあります。クラスの代わりにOutputStreamクラスを使用InputStreamしてください。

于 2012-04-30T22:33:38.290 に答える
1

Base64 は、バイナリ データ (画像など) を文字列で確実に転送する最も効率的な方法です。

ただし、より小さなものを要求しているため、画像をbase64でエンコードし、結果の文字列を圧縮してからbase64でエンコードすることを検討してください...

数バイト節約できますが、それほど多くはありません。場合によっては、結果が大きくなる可能性さえあります。

サーバーとクライアントの両方を制御できる場合は、バイトを送信できる別のインターフェイスを作成することを検討する必要があります。

于 2012-05-08T22:40:01.160 に答える
1

画像のバイトを a に読み取り、Base64 を使用してbyte[]エンコードすることができます。方法は次のとおりです。byte[]

于 2012-04-30T22:53:58.890 に答える