mysql图片的存储和读取
时间: 2023-09-04 20:11:35 浏览: 204
Java+MySql图片数据保存与读取的具体实例
MySQL中可以使用BLOB类型来存储二进制数据,包括图片。在存储图片时,可以先将图片文件读入内存,然后将其转换为二进制数据,并将其存储到BLOB类型的字段中。
以下是一个示例的MySQL表结构:
```sql
CREATE TABLE images (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
data MEDIUMBLOB,
PRIMARY KEY (id)
);
```
在这个表中,我们有一个id字段、一个name字段和一个data字段,其中data字段的类型为MEDIUMBLOB,用于存储二进制数据。
要将图片存储到该表中,可以使用以下代码:
```python
import mysql.connector
# 连接数据库
conn = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="mydatabase"
)
# 读取图片数据
with open("image.jpg", "rb") as f:
data = f.read()
# 存储图片数据到数据库
cursor = conn.cursor()
sql = "INSERT INTO images (name, data) VALUES (%s, %s)"
val = ("image.jpg", data)
cursor.execute(sql, val)
conn.commit()
```
在这个示例中,我们使用Python的mysql.connector模块连接到MySQL数据库,并读取了一个名为"image.jpg"的图片文件。然后,我们将图片数据存储到数据库中。
要从数据库中读取图片数据并显示它,可以使用以下代码:
```python
import mysql.connector
from PIL import Image
from io import BytesIO
# 连接数据库
conn = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="mydatabase"
)
# 从数据库中读取图片数据
cursor = conn.cursor()
sql = "SELECT data FROM images WHERE name = %s"
val = ("image.jpg",)
cursor.execute(sql, val)
result = cursor.fetchone()
# 显示图片
if result:
img = Image.open(BytesIO(result[0]))
img.show()
```
在这个示例中,我们从数据库中读取了一个名为"image.jpg"的图片数据,并将其转换为PIL库可以处理的Image对象。然后,我们使用Image对象的show()方法显示了该图片。
注意,这里我们使用了BytesIO来将二进制数据转换为文件对象,以便于PIL库读取。
阅读全文