3

OS X Mavericks で ImageTk.PhotoImage を使用している Tkinter アプリで、PNG 画像が表示されないことに気付きました。ただし、GIF と JPEG は正常に表示されます。エラーが出力されたり例外がスローされたりすることはなく、コードをデバッグすると、画像が読み取られ、高さと幅が正しいことが示されます。簡単な例を次に示します。

import Tkinter
from PIL import Image, ImageTk

logo_file = 'test.png'
#logo_file = 'test.gif'


class Application(Tkinter.Frame):
    def __init__(self, master):
        Tkinter.Frame.__init__(self, master)
        self.master.minsize(width=512, height=256)
        self.master.config()

        self.pack()

        self.main_frame = Tkinter.Frame()
        self.some_image = ImageTk.PhotoImage(Image.open(logo_file))

        some_label = Tkinter.Label(self.main_frame, image=self.some_image)
        some_label.config()
        some_label.pack(side='top')

        self.main_frame.place(in_=self.master, anchor='c', relx=.5, rely=.5)

root = Tkinter.Tk()
app = Application(root)
app.mainloop()

GIF を使用すると画像は表示されますが、PNG を使用すると表示されません。繰り返しますが、これは OS X Mavericks でのみ発生し、Mountain Lion は正常に動作します。再インストール(PILのコンパイル)を試してみましたが、うまくいきませんでした。また、新しいvirtualenvを試しました。

PNGを作成/保存するときに正しく設定する必要があるPNG属性はおそらくありますか?それとも、これは PIL、Tkinter、または OS X のバグですか?

いくつかの詳細を追加する更新

私は使用しています:

  • Python 2.7.5 (/usr/bin/python)
  • PIL 1.1.7 (pip を使用してコンパイル)

これは、Mountain Lion から Mavericks に更新されたばかりで、以前に PIL がインストールされていたマシン上にあり、Apple が出荷したシステム Python をいじっていません。

Update 2 ピロー設定まとめ

Pillow 2.2.1 をインストールしたところ、PNG をサポートしていると表示されました。

--------------------------------------------------------------------
PIL SETUP SUMMARY
--------------------------------------------------------------------
version      Pillow 2.2.1
platform     darwin 2.7.5 (default, Aug 25 2013, 00:04:04)
             [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- TIFF G3/G4 (experimental) support available
--- FREETYPE2 support available
*** LITTLECMS support not available
*** WEBP support not available
*** WEBPMUX support not available
--------------------------------------------------------------------

また、brew(libpng 1.5.14)を使用してlibpngをアンインストールして再インストールしました。次に、zlib を使用していると思われますが、Pillow を再インストールしてビルドを確認しました。

Update 3 で Python 2.7.5 をビルドしようとしている

おそらく問題は zlib にあり、Python 2.7.5 をコンパイルしようとすると、次のようになります。

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _sqlite3           _ssl             
bsddb185           dbm                dl               
gdbm               imageop         linuxaudiodev    
nis                ossaudiodev        readline        
spwd               sunaudiodev        zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:
_tkinter
4

4 に答える 4

1

私は同じ問題を経験していて、次のことを行いました。修正されたようです。

sudo unistall pillow
xcode-select --install
pip install pillow

それはうまくいっているようです。以下の項目もすべてインストールしましたが、すでにインストールされているようです

brew install libtiff libjpeg libpng webp littlecms 
于 2013-11-07T14:43:43.390 に答える
0

自作からPillowをインストールしました(brew install Pillow)。必要なすべての依存関係が自動的にインストールされます。問題が解決しました。

于 2014-11-07T15:46:25.937 に答える
0

Pillow の依存関係をインストールしましたか?

pip uninstall Pillow
brew install libtiff libjpeg webp littlecms
pip install Pillow

brew コマンドを実行するにはHomeBrewが必要です。

于 2013-11-06T15:40:31.023 に答える