当前位置: 代码网 > it编程>数据库>Mysql > MySQL数据库中存储图片和读取图片的操作代码

MySQL数据库中存储图片和读取图片的操作代码

2024年11月02日 Mysql 我要评论
方法一:将图片以 blob 类型存储在数据库中mysql语句实现创建表:首先,你需要在 mysql 中创建一个包含 blob 字段的表来存储图片。create table images ( id

方法一:将图片以 blob 类型存储在数据库中

mysql 语句实现

  • 创建表
    首先,你需要在 mysql 中创建一个包含 blob 字段的表来存储图片。
create table images (
    id int auto_increment primary key,
    name varchar(255) not null,
    image longblob not null
);
  • 插入图片
    假设你已经有了图片数据(可能是从文件读取的二进制数据),你可以使用 insert into ... values 语句来插入图片。
insert into images (name, image) values ('example.jpg', load_file('/path/to/example.jpg'));

注意:load_file() 函数要求 mysql 服务器对指定路径有读取权限,且该路径必须在 mysql 服务器的 secure_file_priv 变量指定的目录中(如果启用了该变量)。

  • 读取图片:
    要从数据库中读取图片,你可以使用 select 语句,并在应用程序中处理返回的二进制数据。
select image from images where id = 1;

要检索图片数据并将其保存为文件,你可以使用select语句和into outfile:

select image from images where id = 1 into outfile '/path/to/your/output.jpg';
  • 注意:使用load_file()和into outfile需要相应的文件系统权限。此外,对于大型二进制数据,请考虑性能影响,因为blob数据类型可能会影响数据库性能。

python 实现

插入图片

import mysql.connector

# 连接到数据库
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)
cursor = conn.cursor()

# 读取图片文件
with open('/path/to/example.jpg', 'rb') as file:
    binary_data = file.read()

# 插入图片到数据库
sql = "insert into images (name, image) values (%s, %s)"
val = ('example.jpg', binary_data)
cursor.execute(sql, val)
conn.commit()

# 关闭连接
cursor.close()
conn.close()

读取图片

import mysql.connector
from io import bytesio
from pil import image

# 连接到数据库
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)
cursor = conn.cursor()

# 从数据库中读取图片
sql = "select image from images where id = 1"
cursor.execute(sql)
result = cursor.fetchone()
image_data = result[0]

# 使用 pil 库显示图片
image = image.open(bytesio(image_data))
image.show()

# 关闭连接
cursor.close()
conn.close()

方法二:将图片存储在文件系统中,并在数据库中存储路径

mysql 语句实现

  • 创建表
    创建一个只包含图片路径或 url 的表。
create table images (
    id int auto_increment primary key,
    name varchar(255) not null,
    path varchar(255) not null
);
  • 插入图片路径
    当图片文件被保存到文件系统后,将其路径插入到数据库中。
insert into images (name, path) values ('example.jpg', '/path/to/example.jpg');
  • 读取图片路径
    从数据库中读取图片路径,并使用该路径在文件系统中访问图片。
select path from images where id = 1;
  • 注意:使用load_file()和into outfile需要相应的文件系统权限。此外,对于大型二进制数据,请考虑性能影响,因为blob数据类型可能会影响数据库性能。

python 实现

保存图片到文件系统并插入路径

import os
import mysql.connector

# 连接到数据库
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)
cursor = conn.cursor()

# 保存图片到文件系统
file_path = '/path/to/save/example.jpg'
with open('/path/to/example.jpg', 'rb') as source_file:
    with open(file_path, 'wb') as dest_file:
        dest_file.write(source_file.read())

# 插入图片路径到数据库
sql = "insert into images (name, path) values (%s, %s)"
val = ('example.jpg', file_path)
cursor.execute(sql, val)
conn.commit()

# 关闭连接
cursor.close()
conn.close()

读取图片路径并显示图片

import mysql.connector
from pil import image

# 连接到数据库
conn = mysql.connector.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)
cursor = conn.cursor()

# 从数据库中读取图片路径
sql = "select path from images where id = 1"
cursor.execute(sql)
result = cursor.fetchone()
image_path = result[0]

# 使用 pil 库显示图片
image = image.open(image_path)
image.show()

# 关闭连接
cursor.close()
conn.close()

总结

  • blob 存储:适合存储小图片或需要保持数据完整性的场景,但可能会增加数据库的大小和备份复杂性。
  • 文件系统存储:适合存储大图片或需要频繁访问的场景,可以减少数据库负载,但需要确保文件系统的可用性和安全性。

选择哪种方法取决于具体的应用场景和需求。

以上就是mysql数据库中存储图片和读取图片的操作代码的详细内容,更多关于mysql存储和读取图片的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com