gpt4 book ai didi

python - 如何使用 PIL 将图像保存在内存中并上传?

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:46 25 4
gpt4 key购买 nike

我是 Python 的新手。目前我正在制作一个原型(prototype),它可以拍摄图像、创建缩略图并将其上传到 ftp 服务器。

到目前为止,我已准备好获取图像、转换和调整大小部分。

我遇到的问题是,使用 PIL (pillow) 图像库转换图像的类型与使用 storebinary() 上传时可以使用的类型不同

我已经尝试过一些方法,例如使用 StringIO 或 BufferIO 将图像保存在内存中。但我总是遇到错误。有时确实上传了图像,但文件似乎是空的(0 字节)。

这是我正在使用的代码:

import os
import io
import StringIO
import rawpy
import imageio
import Image
import ftplib

# connection part is working
ftp = ftplib.FTP('bananas.com')
ftp.login(user="banana", passwd="bananas")
ftp.cwd("/public_html/upload")

def convert_raw():
files = os.listdir("/home/pi/Desktop/photos")

for file in files:
if file.endswith(".NEF") or file.endswith(".CR2"):
raw = rawpy.imread(file)
rgb = raw.postprocess()
im = Image.fromarray(rgb)
size = 1000, 1000
im.thumbnail(size)

ftp.storbinary('STOR Obama.jpg', img)
temp.close()
ftp.quit()

convert_raw()

我尝试过的:

temp = StringIO.StringIO
im.save(temp, format="png")
img = im.tostring()
temp.seek(0)
imgObj = temp.getvalue()

我遇到的错误位于 ftp.storbinary('STOR Obama.jpg', img) 行。

留言:

buf = fp.read(blocksize)
attributeError: 'str' object has no attribute read

最佳答案

对于 Python 3.x,使用 BytesIO 而不是 StringIO:

temp = BytesIO()
im.save(temp, format="png")
ftp.storbinary('STOR Obama.jpg', temp.getvalue())

关于python - 如何使用 PIL 将图像保存在内存中并上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com