-1

ノイズをフィルタリングした後、画像をブラウズして表示するための簡単なGUIを作成しています。ここで、メインクラスは、ここで自己としてコードの一部と呼ばされている:PIL.Imageコンソールから画像をロードしますが、PyCharmのGUIで実行するとエラーが発生します

def load_original_image(self): ##<------ file picker show box 

    if self.chk != 0: self.upperFrame.withdraw() 

     self.filename = tk.filedialog.askopenfile(mode="r") 
     self.upperFrame = Toplevel() 

     self.chk +=1 #<---- this i am using as a status check variable 

     ## Simply saving images below in gif format as tkinter doesn't load image in jpeg format 

     disImg = Image.open(self.filename);disImg.save("imgORI.gif") 
     disImg = Image.open("imgORI.gif");disImg = PhotoImage(disImg) 
     panelCEM = Label(self.upperFrame,image=disImg);panelCEM.image = disImg;panelCEM.pack() 

     imgX = Image.open(self.filename) 

def processImage(self): 
    filterCutOff = self.SliderBtn1.get() 
    sdCutOff = self.SliderBtn2.get() 
    img = Image.open(self.filename) 

    <rest of the code is processing the image using filters> 

これらの2つの方法は、最初のものは、ユーザが画像のパスを参照し、それをロードすることができ、同じクラスの一部であります表示。 2番目のコードはロードされたイメージを処理します。 しかし、GUIは表示する元のイメージを読み込むことができません。また、次のエラーを処理しようとするとポップアウトすることもありません。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte 

I「は、第二の方法は、」画像を処理するために呼び出されたときに、画像符号化誤差が出てくるため、その原画像は、いくつかの問題を作成してロードするために「第一の方法を」疑います。

pythonコンソールでコードラインを個別に実行しようとすると、エンコードエラーなしでイメージが正しく読み込まれます。私がGUIコードの一部としてPyCharm(IDE)を使って実行したときだけ、エラーが発生します。

これは今では私の神経の上で実行されている誰かが私を助けることができますか?より明確にするために必要な情報があれば教えてください。研究の一部であるため、コード全体を公開することはできないという事実をご了承ください。私はタスクのためにPython3.5と互換性のあるライブラリを使用しています。

+0

'print(self.filename)'を追加するなど、基本的なデバッグを試してみましたか?私は結果があなたを驚かせるだろうと思う。 –

+0

あなたが言ったことをやったことがありましたが、 'self.filename'は私にファイルハンドラを与え、ファイルを開くことができます。しかし、それはもちろん動作しませんでした。 – Ashutosh

答えて

0

askopenfileファイルを返しません。開いているファイルへのハンドルを返します。

ファイル名を取得する場合は、askopenfilenameに電話してください。

+0

私はそれを試してみましたが、 'askopenfile'は' askopenfilename'が完全なファイルパスと名前を入力する必要がある間にファイルを閲覧することができます。私は 'askopenfile'がファイル名を与えるかどうかをチェックしなかったことに同意します。しかし、その後、ユーザーがファイルパスをブラウズして同時にファイル名を取得できるようにするにはどうしますか? – Ashutosh

+0

@Ashutosh:あなたのご意見は分かりません。どちらの方法でも同じダイアログが表示されます。 1つはファイル名を返し、1つはすでに開いているファイルを返します。 –

+0

これで、tkinterで利用できる同様の種類の関数を使いこなしました。今私はそれに取り組んでいます。前のメッセージを無視していただき、ありがとうございます。 – Ashutosh

関連する問題