php - JSON 64位解码来自android的位图以放置在mysql BLOB中

标签 php android mysql json

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

我能够使用

将位图转换为格式正确的字符串

converting-images-to-json-objects

这是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 但它返回 SYNTAX 类型的 json_error

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

是的,我也会有同样的问题,如何将它从 blob 中取出返回到 base64 字符串

最佳答案

json_decode 解析 JSON 字符串并返回关联数组,模仿 JSON 字符串中的键/值对。

您似乎错过了另一个步骤:您需要将 Base64 编码的图像字符串解码回位图。例如在您的代码中:

$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_bitmap 作为 BLOB 保存在数据库中。

关于php - JSON 64位解码来自android的位图以放置在mysql BLOB中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14926005/

相关文章:

android - 简单的 Facebook Android SDK : How to like a Page

mysql - 是否可以为特定表格的特定列启用表情符号?

php - Yii2:如何访问模板邮件中的参数?

php - XML 文件到 PHP 数组(带属性)

android - Ubuntu 10.04 和 Android 1.5 的 Ad hoc 网络

php - 删除 id 位于逗号分隔字符串中的行

php - PDO Insert 将值 1 写入具有绑定(bind)参数的所有字段

php - 验证预约表

php - 订阅 - 如何处理大量内容和订阅量?

Android 与 WCF Web 服务使用 ksoap2 - 错误 SoapFault - 故障代码 : ‘a:ActionNotSupported’