繁体   English   中英

打开过程并将特定图像保存在相关文件夹中

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM