0

いくつかの tiff ファイルを 2000*2000 から 500*500 にリサンプリングしようとしています。関数を作成し、1 つのファイルを試してみましたが、うまくいきました。今、私が持っているすべての利用可能なファイルに適用したいと思います。

関数の出力を書きたいのですが、自分の知識に基づいてコードを書きましたが、out_file の書き込みでエラーが発生します。参考までに、関数とメイン コードの両方をコピーしました。メイン コードは、名前に従って tif ファイルを読み取り、関数を適用します。sb が私の間違いを教えてくれたらありがたいです。

#*********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 ()   
4

1 に答える 1