Je veux dégrader la qualité de l'image à quelques kilo-octets. Quelle est la meilleure façon de faire cela? P>
Merci! P>
4 Réponses :
résolu.
J'ai fait .... p>
Qualité CODE> est uniquement destiné à JPEG, il est ignoré pour un autre format.
a) Modifier la taille: Quoi que vous fassiez, il existe un compromis entre la taille et la qualité. P> image.Resize.Resize (taille, filtre) code> b) le convertir explicitement en jpeg (si ce n'est pas) et définir la qualité souhaitée. c) utiliser une combinaison de a) et b) p>
Si le format d'image est JPEG, voici un exemple: Les références que vous devez lire sont les suivantes: p>
PNG accepte un drapeau "optimiser". Vous devez vérifier que les documents de chaque format d'image individuel pour déterminer les indicateurs d'optimisation que vous pouvez utiliser.
FWIW, l'OP n'est pas grand sur la lecture de la documentation - il a obtenu s.o.
@MARTINEAU AUSSI FWIW, je trouve la documentation PIL Associety. Imx, vous ne pouvez pas vraiment simplement pirater avec dir code> /
Aide code> /
doc code> et obtenir des réponses aussi souvent que vous le souhaitez. De plus, par exemple, remplacer
png code> avec
jpg code> dans le lien d'asymptote donne un 404.
@Karl Knechtel: Ce n'est peut-être pas la plus grande documentation, mais la réponse à cette question est dedans. Pour im.save () code> il dit "Les options de mots-clés peuvent être utilisées pour fournir des instructions supplémentaires à l'auteur. Si un écrivain ne reconnaît pas une option, il est ignoré silencieusement. Les options disponibles sont décrites plus tard. Dans ce manuel ". Si vous regardez ensuite dans l'annexe JPEG, il est indiqué "La méthode de sauvegarde prend en charge les options suivantes: Qualité - La qualité de l'image, sur une échelle de 1 (meilleur) à 95 (meilleur). La valeur par défaut est 75. Les valeurs supérieures à 95 doivent être évitées. ; 100 désactive complètement la phase de quantification JPEG ".
@Karl Knechtel: Voici un lien pour le PNG Annexe dans le manuel en ligne.
@ASIM IHSAN COMPRESSION de cette manière. L'image perds les données d'orientation .. et la photo à l'heure est enregistrée inversée / retournée, etc. ... Comment garder les données Exif?
@Vijaysharganer Je peux confirmer que l'utilisation de PIL de cette manière ne conserve pas les métadonnées EXIF. Vous pouvez utiliser un autre module Python comme pyexiv2 code> pour copier manuellement sur l'exsi après avoir créé le nouveau fichier. Pour plus d'informations, voir: Stackoverflow.com/Questtions/17042602/...
Cela a fonctionné pour moi pour utiliser une boucle pour redimensionner des images à l'aide de PIL. Les produits variables sont une liste qui contenait tous les noms de produits, mais vous pouvez également utiliser des readlines () pour chaque ligne dans un fichier pour le faire:
def resize_images(self): products = PRODUCTS for name in products: try: fp = open(filename + name + ".jpg", "rb") img = Image.open(fp) img.load() img.save(filename + name + "_2" + ".jpg", quality=23) fp.close() except: print name