我知道您可以使用PIL以下列方式获取图像大小
from PIL import Image
im = Image.open(image_filename)
width, height = im.size
Run Code Online (Sandbox Code Playgroud)
但是,我想获得图像的宽度和高度,而不必将图像加载到内存中.那可能吗?我只对图像大小进行统计,不关心图像内容.我只想让我的处理更快.
我需要检查目录中图像的尺寸.目前它有大约700张图像.我只需要检查尺寸,如果尺寸与给定尺寸不匹配,它将被移动到另一个文件夹.我该如何开始?
我正在使用 subreddit 刮板从墙纸 subreddits 下载图像。我遇到的问题是某些图像的分辨率很小,导致它们在用作墙纸时看起来很糟糕。我发现好看的墙纸所需的最低分辨率是 1920x1080。我现在需要制作一个不断运行的脚本来扫描图像文件夹,查看每个图像分辨率并决定是删除它还是继续下一个图像。我已经在 Python 中修修补补了一个小时左右,但我觉得我无处可去,因为我只是一个初学者并且几个月没有使用 Python。对这个项目的任何帮助都会很棒;)!干杯。
更新:我现在被困在如何让程序运行一个文件夹并查看每张图片。目前我的代码是;
import os
from PIL import Image
while True:
for file in os.listdir(r"C:\\Users\\Barney\\Documents\\sam"):
im = Image.open(file)
x, y = im.size
totalsize = x*y
if totalsize < 2073600:
os.remove(file)
Run Code Online (Sandbox Code Playgroud)
但这会返回错误;
Traceback (most recent call last):
File "C:\Users\Barney\Desktop\imagefilter.py", line 7, in <module>
im = Image.open(file)
File "C:\Python34\lib\site-packages\PIL\Image.py", line 2251, in open
fp = builtins.open(fp, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'Car - 1971 Ford Mustang Mach 1 351 [2560X1600].jpg'
Run Code Online (Sandbox Code Playgroud)
在互联网上我看到我打开程序的地方可能有问题??非常困惑,因为程序正在查看此文件夹并读取内容,因为它说不存在的文件在该文件夹中?有什么帮助吗?
我有一个bat文件,列出代码所在文件夹中所有图像的路径
@echo off
break > infofile.txt
for /f "delims=" %%F in ('dir /b /s *.bmp') do (
echo %%F 1 1 1 100 100 >>infofile.txt
)
Run Code Online (Sandbox Code Playgroud)
文本文件如下所示
C:\Users\Charles\Dropbox\trainer\temp\positive\rawdata\diags(1).bmp 1 1 1 100 100
C:\Users\Charles\Dropbox\trainer\temp\positive\rawdata\diags(348).bmp 1 1 1 100 100
C:\Users\Charles\Dropbox\trainer\temp\positive\rawdata\diags(353).bmp 1 1 1 100 100
Run Code Online (Sandbox Code Playgroud)
我想要做的是用每个图像宽度和高度的尺寸替换100 100.感谢提前.