检查FTP服务器上存储的图像的纵横比,无需下载Python文件
我有FTP上的图像,我想在从FTP服务器下载图像之前检查图像的纵横比。使用Python检查FTP服务器上存储的图像的纵横比,无需下载Python文件,python,image,ftp,ftplib,Python,Image,Ftp,Ftplib,我有FTP上的图像,我想在从FTP服务器下载图像之前检查图像的纵横比。使用Pythonftplib,是否有一种方法可以在不下载文件的情况下检查FTP上的图像尺寸(即宽度和高度)?图像尺寸是文件内容的一部分。因此,您至少需要下载文件中包含该信息的部分。这将与图像文件格式不同。但通常都是在文件的开头 如何使用ftplib实现这一点:只要开始下载并在收到足够的数据后中止下载即可。在FTP中没有更聪明的方法来实现这一点。有关示例,请参见 我会尝试阅读8KB之类的内容,这应该足够了。然后,您可以使用如下代
ftplib
,是否有一种方法可以在不下载文件的情况下检查FTP上的图像尺寸(即宽度和高度)?图像尺寸是文件内容的一部分。因此,您至少需要下载文件中包含该信息的部分。这将与图像文件格式不同。但通常都是在文件的开头
如何使用ftplib实现这一点:只要开始下载并在收到足够的数据后中止下载即可。在FTP中没有更聪明的方法来实现这一点。有关示例,请参见
我会尝试阅读8KB之类的内容,这应该足够了。然后,您可以使用如下代码从部分文件检索大小:
相关问题:非常感谢!非常有帮助!
from PIL import Image
from ftplib import FTP
from io import BytesIO
ftp = FTP()
ftp.connect(host, user, passwd)
cmd = "RETR {}".format(filename)
f = BytesIO()
size = 8192
aborted = False
def gotdata(data):
f.write(data)
while (not aborted) and (f.tell() >= size):
ftp.abort()
aborted = True
try:
ftp.retrbinary(cmd, gotdata)
except:
# An exception when transfer is aborted is expected
if not aborted:
raise
f.seek(0)
im = Image.open(f)
print(im.size)