Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON 64位解码从android到mysql BLOB中的位图_Php_Android_Mysql_Json - Fatal编程技术网

Php JSON 64位解码从android到mysql BLOB中的位图

Php JSON 64位解码从android到mysql BLOB中的位图,php,android,mysql,json,Php,Android,Mysql,Json,使用android、json和php向mysql发送图像 我能够使用 以下是android中的代码 JSONObject values = new JSONObject(); values.put(KEY_CONTRACTUUID, con.UUID); ... if (con._sig != null) { String encodedImage = getStringFromBitmap

使用android、json和php向mysql发送图像

我能够使用

以下是android中的代码

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);
我需要在图像上调用json_decode,以将其从64位中取出并放入blob中,对吗

然而,要做到这一点,我需要使用函数json_decode,但是json_decode假设我会给它一个JSONObject,因为我的$json对象中有更多的对象,我需要重新创建一个json对象,其中只有图像,并将其传递给json_decode 但它重新运行了类型语法的json_错误

我做错了什么,将base64字符串转换为blob的正确方法是什么


是的,我将遇到同样的问题,如何将它从blob中恢复到base64字符串

json\u decode解析一个json字符串并返回一个关联数组,模拟json字符串中的键/值对

看起来您缺少了另一个步骤:您需要将base64编码的图像字符串解码回位图。e、 g.在代码中:

$json = json_decode($HTTP_RAW_POST_DATA,true);
echo var_dump(HTTP_RAW_POST_DATA);
...
$varsigimage = $json['sigimage'];

$image_bitmap = base64_decode($varsigimage); // decode the string back to binary

现在,您应该能够将
$image\u bitmap
保存为数据库中的一个BLOB。

我确实有这一点-在原始文章中,这是该教程的一部分。我想我认为在php中有一些特殊的东西与之相关。但我只是不碰它,把它保留在字符串中保存到blob,然后在我需要它时将blob按原样发送给我,除了android端的编码/解码之外,不需要其他编码/解码?如果你的应用程序将图像以JSON字符串的base64编码字符串发送到你的服务器,那么你的服务器需要将其解码回二进制,如果要将其保存为BLOB。当然,您可以将其直接保存为base64编码字符串,并在需要时动态解码。底线是,如果您想在应用程序和服务器之间传递JSON,二进制数据必须在它们之间进行base64编码/解码。因此,现在一切都正常了-我的问题是,如果我将该项存储为base64,则其格式不同,如果我从例如phpmyadmin插入图像,这就是为什么我想在把它放入blob之前先从64解码它,对吗?