0

背景:Eclipse SDK 4.2.1(Juno)でpython 3.2を使用していますが、何か奇妙なことに気づきました。プログラムはEclipseで完全に実行されますが、ファイルマネージャーから開くと常にエラーで閉じます。コマンドを閉じる前にスクリーンショットを取得できました。ここに画像の説明を入力してください

プログラムが「images」と「Cy.png」の間に「\」を追加しているようです。ただし、プログラムからスラッシュを削除することはできません。文字列にスラッシュを含める必要があるため、プログラムでは2つのスラッシュを使用しました。私のプログラムは次のとおりです。

from PIL import Image

def pathConstruction(count, imageName):
    l = []
    l.append('images\\')
    if count == 1:
        l.append('Sepia')
    l.append(imageName)
    imagePath = ''.join(l)
    return imagePath

def grayscale(pix, width, height):
    for col in range(width):
        for row in range(height):
            r,g,b = pix[col, row]
            avg = ((r + g + b) / 3)
            r = int(avg)
            g = int(avg)
            b = int(avg)
            pix[col, row] = r,g,b

def sepia(pix, width, height):
    for col in range(width):
        for row in range(height):
            r,g,b = pix[col, row]
            newR = (r * 0.393 + g * 0.769 + b * 0.189)
            newG = (r * 0.349 + g * 0.686 + b * 0.168)
            newB = (r * 0.272 + g * 0.534 + b * 0.131)
            pix[col, row] = int(newR),int(newG),int(newB)

imageName = input("Please input the full name of your image, including extension: ")
count = 0
imagePath= pathConstruction(count, imageName)
count = count + 1

img = Image.open(imagePath)
pix = img.load()
width, height = img.size

grayscale(pix, width, height)
sepia(pix, width, height)

imagePath = pathConstruction(count, imageName)
img.save(imagePath)
img.show()

質問:Eclipseの外部でこのプログラムを実行するにはどうすればよいですか?

4

2 に答える 2

2

問題は、ディレクトリとファイル名の間に表示される余分なバックスラッシュ(文字列の名前からだと思いreprます)ではなく\r、最後に追加されていることだと思います。からの値にそれが含まれる理由はわかりませんが、文字列inputを呼び出すことで削除できstripます。

于 2012-12-12T15:41:18.730 に答える
1

組み込みの os.path モジュールを使用するだけです。よりシンプルで信頼性が高くなります。

def pathConstruction(count, imageName):
    import os
    dir = "images"
    if count == 1:
        imageName = "Sepia" + imageName
    return os.path.join(dir, imageName)
于 2012-12-12T15:34:49.950 に答える