Base64を使用してイメージ バイナリ データ ( で表されるbyte[]
) をエンコードし、それを CDATA として xml に含めることができます。次に、Android マシンで、それをバイト配列にデコードし、画像をレンダリングします。
Apache Commonsを使用してエンコード/デコードできます。
編集:
画像データを変換するには、画像データのバイト表現を取得する必要があります。私の例を見てください。これは と を使用sun.misc.BASE64Decoder
しsun.misc.BASE64Encoder
ています。Android で自由に使えるものに応じて、適応する必要がある場合があります (Apache Commons を参照)。
public class SO11096275 {
public static byte[] readImage(URL url) throws IOException {
final ByteArrayOutputStream bais = new ByteArrayOutputStream();
final InputStream is = url.openStream();
try {
int n;
byte[] b = new byte[4096];
while ((n = is.read(b)) > 0) {
bais.write(b, 0, n);
}
return bais.toByteArray();
} finally {
if (is != null) {
is.close();
}
}
}
public static void main(String[] args) throws Exception {
URL url = new URL("http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png");
byte[] imgData = readImage(url);
String imgBase64 = new BASE64Encoder().encode(imgData);
System.out.println(imgBase64);
byte[] decodedData = new BASE64Decoder().decodeBuffer(imgBase64);
FileUtils.writeByteArrayToFile(new File("/path/to/wikipedia-logo.png"), decodedData); // apache commons
}
}
次に、画像データを の文字列として取得しますimgBase64
。必要な DOM 実装 (dom4j など) を使用してノードを xml に追加するだけです。CDATA
XMLに追加するメソッドがあります。最後に、Android では、ノードのコンテンツを取得するだけで済みます。上記のようにデコードして、イメージに対して必要な処理を実行できます。