[英]Open process and save specific images in related folder
我正在寻找一种打开并裁剪多个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)
该脚本向我返回了新的错误消息:
追溯(最近一次通话):
在im.crop((3000,6600,3700,6750))中的文件“ C:/ Users /.../ Desktop / Python / script.py”,第11行,.save(“ crop” + file)
作物self.load()中的文件“ C:\\ Python34 \\ lib \\ site-packages \\ PIL \\ Image.py”,行986
加载self.load_prepare()中的文件“ C:\\ Python34 \\ lib \\ site-packages \\ PIL \\ ImageFile.py”,行166
文件“ 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
类的内置函数用作变量名也是一个好习惯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.