jpl38 a écrit :
Merci pour ta contribution J'ai avancé (un peu...) l'instruction "img.fp" renvoie dans Pillow un objet BufferedReader dont j'ignore tout. Ce qui est curieux, c'est que pour renvoyer cet objet sur un fichier texte, on utilise la syntaxe "fichier.buffer" : Code :
- # Importing Image from PIL package
- from PIL import Image
- img = Image.open("MonImage.png" )
- print(img.fp)
- img.close
- fichier = open('test.txt', 'r')
- print(fichier.buffer)
- fichier.close
|
Sortie :
Code :
- <_io.BufferedReader name='MonImage.png'>
- <_io.BufferedReader name='test.txt'>
|
Tout ceci est très cohérent, buffer d'un côté, fp de l'autre
|
Ce sont des structures différentes dans des bases de code différentes, rien n'impose d'utiliser le même nom d'attribut D'autant moins quand leur relation au BufferedReader n'est pas la même. Sans même parler du fait que "fp" est un détail d'implémentation.
Un "fichier texte", c'est un TextIOWrapper, c'est à dire une couche par dessus un buffer binaire qui va automatiquement s'occuper de l'encodage et du décodage.
Quand tu ouvres un fichier en mode binaire, il n'y a pas de couche textuelle (vu que tu veux pas du texte), donc t'as directement … un BufferedReader (accessoirement t'as pas cherché bien loin pour pas le trouver).
Une image est généralement binaire, donc pour Pillow un pointeur vers un fichier (binaire) ça va stocker un BufferedReader, il s'en fout du type spécifique il sait juste que c'est ce qui sort de `open`
Accessoirement, en dehors d'être un mauvais style tes accès à "close" font rien du tout, c'est une méthode, une méthode ça s'appelle.
Message édité par masklinn le 23-04-2021 à 20:04:32
---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody