Android、json、phpを使用してmysqlに画像を送信する
を使用して、ビットマップを適切にフォーマットされた文字列に変換することができました
ここにアンドロイドのコードがあります
JSONObject values = new JSONObject();
values.put(KEY_CONTRACTUUID, con.UUID);
...
if (con._sig != null) {
String encodedImage = getStringFromBitmap(con._sig);
values.put(KEY_CONTRACTSIGIMAGE, encodedImage);
private static String getStringFromBitmap(Bitmap bitmapPicture) {
/*
* This functions converts Bitmap picture to a string which can be
* JSONified.
*/
final int COMPRESSION_QUALITY = 100;
String encodedImage;
ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream();
bitmapPicture.compress(Bitmap.CompressFormat.PNG, COMPRESSION_QUALITY,
byteArrayBitmapStream);
byte[] b = byteArrayBitmapStream.toByteArray();
encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
return encodedImage;
}
これはbase64であり、mysqlのBLOBに配置するために適切に取得する必要がある文字列です
私は名前と値のペアやそのナンセンスを使用していません-単にjsonとして送信し、次のようにjson文字列を取得します:
$json = json_decode($HTTP_RAW_POST_DATA,true);
echo var_dump(HTTP_RAW_POST_DATA);
...
$varsigimage = $json['sigimage'];
$formatedJSONimage = "{'sigimage': '$varsigimage'}";
var_dump($formatedJSONimage);
$sigImagedecoded = json_decode($formatedJSONimage);
var_dump($sigImagedecoded);
イメージを64ビットから取り出してブロブに正しく配置するには、イメージでjson_decodeを呼び出す必要がありますか?
ただし、これを行うには関数 json_decode を使用する必要がありますが、json_decode は、JSONObject を指定することを前提としています。$json オブジェクトにはさらに多くのオブジェクトがあるため、その中に画像だけを含む単一の JSON オブジェクトを再作成する必要があります。 、それをjson_decodeに渡しますが、SYNTAXタイプのjson_errorを返します
私は何を間違っていますか、base64文字列をブロブに変換する正しいアプローチは何ですか?
はい、blob から base64 文字列に戻すことについて、同じ質問をするつもりです。