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
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. –
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
Sur une note distincte, la convention Python concerne les variables minuscules et les classes UpperCase. – katrielalex