我正在寻找一种方法来打开和裁剪多个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经验和代码。对不起,如果答案很明显
[EDIT /更新] 在修改了我的初始代码之后,感谢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行,in im.crop((3000,6600,3700,6750))。save(“crop”+ file)
在裁剪文件“C:\ Python34 \ lib \ site-packages \ PIL \ Image.py”,第986行 self.load()
加载文件“C:\ Python34 \ lib \ site-packages \ PIL \ ImageFile.py”,第166行 self.load_prepare()
文件“C:\ Python34 \ lib \ site-packages \ PIL \ ImageFile.py”,第250行,in load_prepare self.im = Image.core.new(self.mode,self.size)ValueError:无法识别的模式
一个可能有用的信息,它是GeoTiff格式的Landsat8图像。因此,TIFF文件包括地理位置,投影...信息。如果我首先用Photoshop(16int tiff格式)等软件打开并重新保存它们,脚本就可以正常工作。
答案 0 :(得分:0)
搜索文件名时,使用filespath指定目录。
但是当你打开文件时,你只使用基本文件名。
所以你可以替换
im = Image.open(file)
带
filepath = os.path.join(filespath, file)
im = Image.open(filepath)
还可以考虑使用glob模块,就像glob.glob(r'path\*.tif)
一样。
避免使用file
之类的内置函数作为变量名称也是一种好习惯。