JSON文字列をphpからJavaに送信しています。これは、文字列型のデータとエンコードされた画像で構成されています。jJva では、inputStream は BufferedReader と String に変換されます。文字列は次のよう{"name": "xxx", "image":agrewfefe...}
になります画像を表す文字列をビットマップにデコードする方法はありますか、または画像を他のストリームで送信する必要がありますか?
質問する
5104 次
2 に答える
1
前述のように、Base64 エンコーディングが最適です。ただし、手動で行う代わりに、Jackson JSON ライブラリを使用するだけで、自動的に Base64 でバイナリ データ ( として宣言されているもの) をエンコード/デコードしますbyte[]
。だから何か
public class Request {
public String name;
public byte[] image;
}
Request req = new ObjectMapper().readValue(new URL("http://my.service.com/getImage?id=123"),
Request.class);
于 2012-12-05T06:07:33.940 に答える
1
はい; 画像をBase64でエンコードする必要があります。
生成した文字が印刷可能であること、または JSON 形式を壊さないことは保証されていません。
多くの Base64 エンコード/デコード ライブラリがあります。一般的に使用されるものは、Apache commons (コーデック) ライブラリに含まれています
http://www.kodejava.org/examples/375.htmlの簡単な使用例を次に示します。
import org.apache.commons.codec.binary.Base64;
import java.util.Arrays;
public class Base64Encode {
public static void main(String[] args) {
String hello = "Hello World";
//
// The encodeBase64 method take a byte[] as the paramater. The byte[]
// can be from a simple string like in this example or it can be from
// an image file data.
//
byte[] encoded = Base64.encodeBase64(hello.getBytes());
//
// Print the encoded byte array
//
System.out.println(Arrays.toString(encoded));
//
// Print the encoded string
//
String encodedString = new String(encoded);
System.out.println(hello + " = " + encodedString);
}
}
送信側では、そのエンコードされた文字列を JSON の「画像」フィールドに使用します。もう一方の端では、JSON を解析してから、Base64 文字列をデコードして画像に戻します。
追加する編集:質問を読み直してください(最初にタグに注目し、PHPの部分を見逃しただけです)-PHP側で使用する必要がありますbase64_encode
于 2012-12-04T19:06:35.327 に答える