1 python python-imaging-library
以下代码给我一个错误:
def save(self):
self.filePath, _ = QFileDialog.getOpenFileName(self, "Open File ", "", "JPEG(*.JPEG *.jpeg *.JPG *.jpg)")
img =Image.open(self.filePath)
conn.execute("INSERT INTO DriverInfo(driverImg)VALUES(?)", repr(memoryview(img)))
conn.commit()
Run Code Online (Sandbox Code Playgroud)
错误是:
TypeError: memoryview: a bytes-like object is required, not 'JpegImageFile'
正如错误消息所示,内存视图期望接收原始字节。要获取组成图像的字节,请执行以下操作:
from io import BytesIO
img = Image.open('1x1.jpg')
# Create a buffer to hold the bytes
buf = BytesIO()
# Save the image as jpeg to the buffer
img.save(buf, 'jpeg')
# Rewind the buffer's file pointer
buf.seek(0)
# Read the bytes from the buffer
image_bytes = buf.read()
# Close the buffer
buf.close()
Run Code Online (Sandbox Code Playgroud)
或者更简洁地说:
from io import BytesIO
img = Image.open('1x1.jpg')
# Create a buffer to hold the bytes
buf = BytesIO()
# Save the image as jpeg to the buffer
img.save(buf, 'jpeg')
# Rewind the buffer's file pointer
buf.seek(0)
# Read the bytes from the buffer
image_bytes = buf.read()
# Close the buffer
buf.close()
Run Code Online (Sandbox Code Playgroud)