フォーラムの良き友人。
私はたくさん検索してきましたが、画像をシリアル化して Android の文字列に渡す方法を見つけることができませんでした。
そうではないかもしれませんが、誰かが知っていて私に知らせたいと思っているなら、私はとても感謝しています!.
フォーラムの良き友人。
私はたくさん検索してきましたが、画像をシリアル化して Android の文字列に渡す方法を見つけることができませんでした。
そうではないかもしれませんが、誰かが知っていて私に知らせたいと思っているなら、私はとても感謝しています!.
java.awt.Image
クラスはありません(実装されていません)がjava.io.Serializable
、javax.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
してください。
Base64 は、バイナリ データ (画像など) を文字列で確実に転送する最も効率的な方法です。
ただし、より小さなものを要求しているため、画像をbase64でエンコードし、結果の文字列を圧縮してからbase64でエンコードすることを検討してください...
数バイト節約できますが、それほど多くはありません。場合によっては、結果が大きくなる可能性さえあります。
サーバーとクライアントの両方を制御できる場合は、バイトを送信できる別のインターフェイスを作成することを検討する必要があります。
画像のバイトを a に読み取り、Base64 を使用してbyte[]
エンコードすることができます。方法は次のとおりです。byte[]