2010-10-26 13 views
0

J'écris un petit script Python en utilisant le module PIL pour changer la taille de certaines textures utilisées sur un modèle 3D dans MultiGen Creator. J'utilise aussi l'API openflight, c'est ce que sont les fonctions mg *.Problème d'écriture de fichier image en Python avec PIL

est ici le script

import PIL 
from PIL import Image 

db = mgGetCurrentDb() 
ret,index,name = mgGetFirstTexture (db) 
while (ret): 
myAttr = mgReadImageAttributes (name) 
existingattrs = mgGetAttList (myAttr,fltImgHeight,fltImgWidth) 
print existingattrs[2] 
print existingattrs[4] 
if existingattrs[2] != 0 and existingattrs[4] != 0: 
    Height = existingattrs[2]/4 
    Width = existingattrs[4]/4 

    print name 
    print Width 
    print Height 
    imageFile = (name) 
    im1 = Image.open(imageFile) 
    im2 = im1.resize((Width,Height),PIL.Image.BILINEAR) 
    ImgOut = "C:\DB\PLW\out.jpg" 

    im2.save(ImgOut) 

    ret,index,name = mgGetNextTexture (db) 

Quoi qu'il en soit tout semble fonctionner, mais quand je tente d'écrire le fichier que je reçois l'erreur suivante

E: Traceback (most recent call last): 
E: File "<string>", line 24, in <module> 
E: File "C:\Python25\lib\site-packages\PIL\Image.py", line 1439, in save 
E:  save_handler(self, fp, filename) 
E: File "C:\Python25\Lib\site-packages\PIL\JpegImagePlugin.py", line 471, in _save 
E:  ImageFile._save(im, fp, [("jpeg", (0,0)+im.size, 0, rawmode)]) 
E: File "C:\Python25\Lib\site-packages\PIL\ImageFile.py", line 499, in _save 
E:  s = e.encode_to_file(fh, bufsize) 
E: IOError: [Errno 0] Error 
+0

Veuillez mettre en retrait votre code correctement. Lorsque vous modifiez votre question, lisez les instructions de mise en forme du code sur le côté droit de la page. –

+0

Est-ce aussi simple que de changer ceci'ImgOut = "C: \ DB \ PLW \ out.jpg" 'à ce' ImgOut = r "C: \ DB \ PLW \ out.jpg"? Je ne me souviens pas si python sous Windows fait des backslashes correctement si les caractères échappés ne sont pas évitables. – hughdbrown

+0

Sur une note distincte, la convention Python concerne les variables minuscules et les classes UpperCase. – katrielalex

Répondre

2

Vous devez les \ caractères dans votre fichier nommer ou utiliser une chaîne brute:

ImgOut = "C:\\DB\\PLW\\out.jpg" 
    ImgOut = r"C:\DB\PLW\out.jpg" 

Le message d'erreur est fondamentalement disant qu'il ne pouvait pas ouvrir le fichier.