Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查FTP服务器上存储的图像的纵横比,无需下载Python文件_Python_Image_Ftp_Ftplib - Fatal编程技术网

检查FTP服务器上存储的图像的纵横比,无需下载Python文件

检查FTP服务器上存储的图像的纵横比,无需下载Python文件,python,image,ftp,ftplib,Python,Image,Ftp,Ftplib,我有FTP上的图像,我想在从FTP服务器下载图像之前检查图像的纵横比。使用Pythonftplib,是否有一种方法可以在不下载文件的情况下检查FTP上的图像尺寸(即宽度和高度)?图像尺寸是文件内容的一部分。因此,您至少需要下载文件中包含该信息的部分。这将与图像文件格式不同。但通常都是在文件的开头 如何使用ftplib实现这一点:只要开始下载并在收到足够的数据后中止下载即可。在FTP中没有更聪明的方法来实现这一点。有关示例,请参见 我会尝试阅读8KB之类的内容,这应该足够了。然后,您可以使用如下代

我有FTP上的图像,我想在从FTP服务器下载图像之前检查图像的纵横比。使用Python
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)