我试图重新采样一些tiff文件从2000*2000到500*500。 我创建了一个函数,我尝试了一个文件,它工作得很好。现在我想把它应用到所有可用的文件中。在
我想写函数的输出,我已经根据我的知识编写了代码,我收到了关于写出_文件的错误。我已经复制了函数和主代码供您考虑。主代码只是根据文件名读取tif文件并应用函数。如果有人能指点我的错误在哪里,我将不胜感激。在
#*********function********************
def ResampleImage(infile):
fp = open(infile, "rb")
p = ImageFile.Parser()
while 1:
s = fp.read()
if not s:
break
p.feed(s)
img = p.close()
basewidth = 500
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
outfile=img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
return outfile
#********* main code********
import os,sys
import ImageResizeF
import PIL
from PIL import Image
from PIL import Image,ImageFile
tpath = 'e:/.../resampling_test/all_tiles/'
tifext = '.tif'
east_start = 32511616
north_start = 5400756
ilist = range (0,14)
jlist = range (0,11)
north = north_start
ee = ',4_'
en = ',2'
for i in ilist:
east = east_start
north = north_start + i * 400
snorth = str (north)
for j in jlist:
east = east_start + j * 400
seast = str (east)
infile = tpath + seast + ee + snorth + en + tifext
output = tpath + seast + ee + snorth + en + '_res'+tifext
out_file = ImageResizeF.ResampleImage(infile)
out_file.write (output)
out_file.close ()
您的错误可能与您从
ImageResizeF.ResampleImage
返回的内容有关,是文件句柄吗?否则,您的操作是错误的,因为您不能关闭不是文件句柄的东西。您应该在函数内部执行整个文件处理或返回图像对象,例如:相关问题 更多 >
编程相关推荐