2012-01-19 7 views
6

私は、さまざまなイメージファイルをWebからダウンロードし、PILを使用していくつかの処理を行うスクリプトを作成しています。このスクリプトでは、urlretreiveを使って画像を一時ファイルにダンプしていますが、今はPIL image.show()メソッドを使用してビューアで開いています。ここでは、コードの関連部分は次のとおりです。Windows上のPythonイメージングライブラリshow()

残念ながら
def main(): 

link_queue = Queue.Queue() 
image_queue = Queue.Queue() 

links = get_image_links('test_search') 

for link in links: 
    link_queue.put(link) 

for image in xrange(len(links)): 
    #create image downloading threads 
    t = ImageDownloadingThread(link_queue, image_queue) 
    t.setDaemon(True) 
    t.start() 

link_queue.join() 

image_data = image_queue.get() 
image_file, image_url = image_data[0][0], image_data[1][0] 
#get the first image downloaded and take a look 
image = Image.open(image_file) 
image.show() 

、一時ファイルはOKロードするように思えますが(Image.openがエラーを返しません)image.show()があるとき、私は、ビューアで何も得ます呼ばれる:

私も問題の一部であったと同じ結果を得る場合には、ローカル、非テンポラリファイルを開くしようとしている

enter image description here

。 OSはWindows Vista 32ビットSP2です。何が間違っているかもしれないかに関するアイデア?

+0

これは既知の問題です。詳細を見つけようとしています。 –

+1

http://stackoverflow.com/questions/4607633/image-format-to-save-in-python – cgohlke

答えて

7

show()start /waitコマンドでデフォルトイメージビューアを一時的なイメージファイルで実行しようとします。 /waitパラメータは、ビューアが終了するまで待機して、ファイルを削除できるようになっています。残念ながら、VistaとWindows 7のデフォルトのビューアは、/waitに正しく応答せず、ファイルを開く前に戻ってきます。ファイルが表示される前に削除されます。

通常の修正点は、PILパッケージでImageShow.pyを編集し、余分なコマンドを追加してファイルを削除するまで数秒待つことです。これは泥だらけだが、ほとんどの場合はうまくいく。 velocityreviews.comおよびhere at StackOverflowの詳細。

もう1つの方法は、.bmpファイル形式を、返される前に適切に待機するプログラム、たとえばmspaint.exeに関連付けることです。

+0

からの修正をお試しいただきありがとうございます! – Bitrex

+0

Windowsだけでなく、他のOSのイメージビューアも同じ問題を抱えている可能性があります。これは修正の可能性があります。 –

関連する問題