我正在寻找一种方法来打开和裁剪多个tiff图像,然后将在同一文件夹(与我的脚本文件夹相关)中创建的新裁剪的图像保存。
我当前的代码如下所示:
from PIL import Image
import os,platform
filespath = os.path.join(os.environ['USERPROFILE'],"Desktop\Python\originalImagesfolder")
for file in os.listdir(filespath):
if file.endswith(".tif"):
im = Image.open(file)
im.crop((3000, 6600, 3700, 6750)).save(file+"_crop.tif")
该脚本向我返回错误:
追溯(最近一次通话):
文件“ C:\ Users ... \ Desktop \ Python \ script.py”,第22行,在im = Image.open(file)
文件“ C:\ Python34 \ lib \ site-packages \ PIL \ Image.py”行2219,在打开时fp = builtins.open(fp,“ rb”)FileNotFoundError:[Errno 2]没有这样的文件或目录:'Image1Name.tif'
“ Image1Name.tif”是我尝试在该文件夹中处理的第一个tif图像。我不知道该脚本如何在找不到文件的情况下给出文件名。有帮助吗?
PS:我有2天的python和一般代码经验。对不起,如果答案很明显
[编辑/更新]借助vttran和ChrisGuest的答案修改了我的初始代码后,将其转换为:
from PIL import Image
import os,platform
filespath = os.path.join(os.environ['USERPROFILE'],"Desktop\Python\originalImagesfolder")
for file in os.listdir(filespath):
if file.endswith(".tif"):
filepath = os.path.join(filespath, file)
im = Image.open(filepath)
im.crop((3000, 6600, 3700, 6750)).save("crop"+file)
该脚本向我返回了新的错误消息:
追溯(最近一次通话):
文件“ C:/ Users /.../ Desktop / Python / script.py”,第11行,位于im.crop((3000,6600,3700,6750))。save(“作物” +文件)
文件“ C:\ Python34 \ lib \ site-packages \ PIL \ Image.py”,行986,位于作物self.load()
文件“ C:\ Python34 \ lib \ site-packages \ PIL \加载self.load_prepare()中第166行的“ ImageFile.py”,
文件“ C:\ Python34 \ lib \ site-packages \ PIL \ ImageFile.py”中的第250行,在load_prepare中。self.im = Image.core.new( self.mode,self.size)ValueError:无法识别的模式
可能有用的信息,它是GeoTiff格式的Landsat8图像。因此,TIFF文件包含地理,投影...信息。如果我首先打开并使用Photoshop之类的软件(16int tiff格式)重新保存它们,则脚本可以很好地工作。
搜索文件名时,可以使用filespath指定目录。
但是,当您打开文件时,仅使用基本文件名。
所以你可以更换
im = Image.open(file)
和
filepath = os.path.join(filespath, file)
im = Image.open(filepath)
还可以考虑使用glob模块,您可以这样做glob.glob(r'path\*.tif)
。避免使用内置函数(如file
变量名)也是一种好习惯。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句