[Python] Redim / Compression d'images

Fermé
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 - 16 nov. 2007 à 11:25
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 - 19 nov. 2007 à 17:09
Bonjour,
Je suis entrain de réaliser un programme python qui permet aux utilisateurs de télécharger des logos pour leurs téléphones portable en utilisant le wap. Je récupère le useragent du téléphone puis je cherche dans une base de données les dimensions de l'écran du mobile. Je redimensionne le logo (format GIF) en fonction de ces données à l'aide de la librairie PIL puis j'envoie le logo. Tout marche très bien, seulement certains téléphonnes n'acceptent pas les images trop grosses. Je suis donc à la recherche d'un meilleur moyen pour redimensionner mon image ou pour la compresser sans perdre trop de qualité. J'ai essayé les filtres de PIL (MinFilter, MedianFilter, MaxFilter) mais ils permettent de gagner seulement quelques Ko et la qualité devient rapidemment mauvaise.
Donc si quelqu'un a une idée...

Merci
A voir également:

12 réponses

sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
16 nov. 2007 à 22:31
Je l'ignore.
As-tu regardé les logs du serveur pour voir quelle est l'erreur ?
1
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
16 nov. 2007 à 11:55
A taille fixe, on peut réduire la taille des GIF de plusieurs manières:

- en réduisant le nombre de couleurs (réduire à 128, si ça ne suffit pas, passer à 64, 32, 16...)
- en supprimant le tramage, ou en utilisant un tramage régulier (au lieu du floyd-steinberg généralement utilisé).
0
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 3
16 nov. 2007 à 12:03
Merci pour ta réponse rapide !
Je pense que la meilleure solution serait alors de réduire le nombre de couleurs d'autant plus que les téléphones concernés sont des anciens modèles qui souvent ne prennent pas en charge beaucoup de couleurs.
Mais techniquement maintenant, est ce qu'il existe une fonction dans la librairie PIL (ou autre) qui permet de réduire le nombre de couleurs ?
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
16 nov. 2007 à 12:08
Mais techniquement maintenant, est ce qu'il existe une fonction dans la librairie PIL (ou autre) qui permet de réduire le nombre de couleurs ?

Je n'ai pas creusé.

Pour certaines manipulation, je fais appel à ImageMagick (avec un os.system()) ce qui me permet d'avoir des traitements plus puissants.
Voir: http://www.commentcamarche.net/faq/sujet 6120 imagemagick manipuler les images en ligne de commande

ImageMagick peut sans problème réduire le nombre de couleur, et on peut choisir le tramage.
Voir http://www.cit.gu.edu.au/~anthony/graphics/imagick6/ pour des exemples.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 3
16 nov. 2007 à 12:36
Je viens de me renseigner sur ImageMagick, c'est vrai que ça a l'air pas mal. Par contre sais-tu comment je fais pour intégrer des lignes de commande pour faire appel à imageMagick à partir de mon script python ?
0
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 3
16 nov. 2007 à 12:46
Désolé de ma question je viens juste de voir que tu m'avais déja donné la réponse dans ton message précédent (os.system()). Puis en plus ça parrait logique.
0
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 3
16 nov. 2007 à 14:57
J'ai un autre problème maintenant ! En fait j'utilise une page asp. C'est donc dans cette page que j'ai mon script python. Je viens de remarquer que la commande passée à l'aide de os.system() qui fait appel à imageMagick fonctionne lorsque que je l'utilise dans un fichier python mais pas en passant par de l'asp. Sais tu d'où vient le problème ? Et comment le résoudre ?
0
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 3
19 nov. 2007 à 12:01
Je viens de me remettre au boulot, donc je viens à peine de voir ta réponse. Apparement c'est une erreur 200.
os.system(cmd) renvoie -1
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
19 nov. 2007 à 12:07
Si ça renvoie -1, c'est que c'est ImageMagick qui a au un problème (erreur dans la ligne de commande, problème en lisant ou écrivant le fichier, format de fichier non reconnu, etc.)

Solution: lancer à la main la ligne de commande ImageMagick avec les mêmes options et le même fichier et regarder les erreurs.
0
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 3
19 nov. 2007 à 12:16
C'est justement là que c'est bizar parce que la ligne de commande marche très bien si je la tappe dans un terminal ou si je la compile dans un fichier python. Mais si j'utilise un navigateur web avec le même fichier python ou avec un fichier asp ça ne marche pas !
0
sebsauvage Messages postés 32893 Date d'inscription mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
19 nov. 2007 à 16:57
Vérifie les droits: Vérifie que l'utilisateur qui lance le programme a assez de droits.

(Généralement, le serveur web tourne avec un utilisteur spécial avec des droits restreinds par mesure de sécurité.)
0
nico_tine85 Messages postés 11 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 13 décembre 2007 3
19 nov. 2007 à 17:09
C'est vrai que le problème vient peu être de là. Pour l'instant je travail sur un serveur de test donc je peux toucher aux droits des utilisateurs. Mais lorsque tout fonctionnera comme il faut, le programme tournera sur un serveur où je ne pourrais pas baisser la sécurité ni même toucher aux droits. Je pense que je vais essayer de trouver une autre solution. A moins que tu n'ais une autre idée. Puis si tu connais un autre moyen de réduire le nombre de couleurs d'un GIF que par imageMagick...
Sinon merci pour ton aide.
0