【问题标题】:image encoding and decoding in mysql using python使用python在mysql中进行图像编码和解码
【发布时间】:2021-03-18 09:52:36
【问题描述】:

我正在尝试读取图像作为输入并将其转换为 base64 类型并将其存储到 mysql db 中。

再次从 mysql 读取 base64 字符串并将数据作为响应发送到前端。

到目前为止我尝试的是:

with open('/home/user/Desktop/image1.png', 'rb') as binary_file:
    binary_file_data = binary_file.read()

我将 binary_file_data 值存储到 mysql blob 列中。

这是在mysql中存储base64的正确方法吗?

以及如何从 mysql 中读取这个 base64 数据并作为响应发送到 python 中的前端?

请有任何建议。

【问题讨论】:

    标签: python mysql base64 blob


    【解决方案1】:

    您不需要使用 base64 以 BLOB 数据类型存储二进制数据。

    base64 编码将三个字节的二进制数据转换为四个字节的 base-64 编码字符,因此它只能使用可打印的 ASCII 符号。通过这样做,它会将您的数据总大小增加 33%。

    BLOB 可以存储完整的 8 位字节,它们不关心不可打印的字节。所以你可以按原样存储字节。

    也就是说,一旦您将图像文件的内容加载到变量binary_file_data 中,然后使用 INSERT SQL 语句将其直接存储到 BLOB 列中。不要对其进行编码。


    你的cmets:

    http 的工作方式是每个图像都是一个单独的 http 请求,因此您需要制作另一个 PHP 脚本来从数据库中获取 BLOB 并回显它:

    <?php
    
    header('Content-Type: image/png');
    
    // query BLOB data from database
    
    // echo BLOB data
    

    然后在输出 HTML 的主 PHP 脚本中,引用从数据库中读取图像的那个:

    <img src="/myimage.php">
    

    只要 PHP 脚本设置了内容类型,它就可以像从磁盘读取图像文件一样工作。

    【讨论】:

    • 感谢您的快速响应,存储到mysql中可以,但是如何将base64数据发送到前端?
    • 然后将数据存储在图片文件中,并通过html或其他任何方法链接。
    猜你喜欢
    • 2020-07-22
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多