2017-08-01 8 views
0

簡単に説明すると、画像を置くフォルダがあります。画像の名前は整数なので、たとえば567.jpg、568.jpg、569.jpg、570.jpg、571.jpgという名前の画像が5つあります。整数はランダムであるが、それらは常に上記のような順序で、すなわち各画像に対して1ずつ増加する。文が偽であれば画像ファイルの名前を変更する

私がしたいことは、このフォルダ内の画像を見て、画像のサイズを見ることです。画像の幅が600ピクセル未満の場合(例として)、この画像を削除して次の画像に移動したいと思います。今、この画像が600pxを超える場合は、シーケンスに続くように名前を変更する必要があります。

ので、原則的に何が起こる必要があることです。

345.jpg - >何も 346-JPGを起こりません - - > 600PXオーバー> 600PXの下 - > 347.jphを削除されます - >

import os 
from PIL import Image 

img_dir_path = "\" 

pic_list = range(567,572,1) 

for image in pic_list: 
    img = Image.open("{}/{}.jpg".format(img_dir_path, image)) 
    if img.size[0] < 600: 
     os.remove("{}/{}.jpg".format(img_dir_path, image)) 
    else: 
     if os.path.isfile("{}/{}.jpg".format(img_dir_path, int(image)-1)) == False: 
      os.rename('{}/{}.jpg'.format(img_dir_path, int(image)), '{}/{}.jpg'.format(img_dir_path, int(image)-1)) 
     else: 
      print "No worries" 
:私は次のコードで試してみました>が...ように

(1つのステップの順序に従うこと)346.jpgに名前が変更され、取得します - 600PXオーバーそうするとき

はしかし、私は次のエラーを取得:それは...

名前変更プロセスの場合

WindowsError: [Error 32] The process cannot access the file because it is being used by another process 

私は、これはいくつかのずさんなコードですけど、私はまだPythonの専門家ではありません、だから私は通常、それを最初に動作させてから調整します。

さらに、真の第1のエントリの前のエントリが存在するか/偽であるかをチェックするとき、最初のイメージの前には何もないので、常に偽であるという問題が生じる。したがって、リスト内の最初の名前の画像は、もちろん名前を変更する必要はありません。しかし、私はこれを動作させることさえできなかったので、私はそれを修正しようとはしませんでした。

+2

をリネームimg = Image.open("{}/{}.jpg".format(img_dir_path, image))

Image.close() 

の名前を変更する前に、開いている画像を閉じることができません.format(img_dir_path、image)) –

+2

Image.close()の前に名前を変更します –

+0

そうです、それでした。回答を受け入れる場合は答えをください:) –

答えて

1

はIMG = Image.open( "{}/{}。JPG" に名前を変更する前に、開いている画像を閉じ行う前

関連する問題