Comment obtenir la taille de l'image (en octets) à l'aide de PIL
J'ai trouvé comment l'utiliser PIL pour obtenir les dimensions de l'image, mais pas la taille du fichier en octets. J'ai besoin de connaître la taille du fichier de décider si le fichier est trop gros pour être transféré à la base de données.
Vous êtes de la génération d'une image, ou l'image stockée sur le disque?
Utiliser le système de fichiers de l'API pour obtenir la taille du fichier, pas PIL.
ou
à l'aide de StringIO pour obtenir le flux.
pourquoi en bas à droit de vote?
Utiliser le système de fichiers de l'API pour obtenir la taille du fichier, pas PIL.
ou
len()
, si vous avez en mémoire et non sur le système de fichiers (ce qui semble probable si vous êtes le stockage sous forme d'un BLOB dans une base de données.)à l'aide de StringIO pour obtenir le flux.
pourquoi en bas à droit de vote?
OriginalL'auteur Abdelouahab Pp | 2012-08-10
Vous devez vous connecter pour publier un commentaire.
Essayer:
Pourquoi auriez-vous besoin pour utiliser PIL?
pour contrôler si c'est une image, pas une fausse image d'en-tête, de faire un upload de profil, puis de les stocker dans la base de données, il est donc évident de faire une méthode dans PIL pour obtenir la taille en octets non?
Non, pas du tout évident. PIL traite de manipulations d'images dans la mémoire, et pour cela il utilise une représentation interne qui est efficace pour la manipulation de pixels. Cette représentation peut, ou peut ne pas correspondre à la taille de l'image lors de l'enregistrement comme un format spécifique...
mais je pense que la taille est caché quelque part dans l'image d'en-tête de fichier lors de la conversion en octets? comme son extension?
OriginalL'auteur thebjorn
Si vous avez déjà l'image sur le système de fichiers:
Si, toutefois, vous voulez obtenir la taille enregistrée d'une image qui est dans la mémoire et n'a pas été enregistré pour le système de fichiers:
Cette méthode permettra d'éviter de multiples lectures de l'image de données qu'avec StringIO. Notez, cependant, qu'il va utiliser plus de mémoire vive. Tout est un compromis. 🙂
Edit: je viens de voir ce commentaire de l'OP:
C'est une très différente, et est probablement de meilleurs résultats sur le serveur web. Pour nginx, vous pouvez l'ajouter à votre configuration:
BytesIO
méthode semble sous-estimer la taille par rapport à l'obtention de la taille du bureau. Aucune idée pourquoi?OriginalL'auteur Scott A
Je suis un peu en retard, mais je suis tombé sur cette question 5 mins ago lors de la recherche de la façon d'obtenir la taille d'un PIL de l'image sans l'enregistrer sur le disque. Dans le cas où quelqu'un d'autre vient à travers cela, c'est une manière simple de le faire:
OriginalL'auteur Peter
Je pense que c'est la vraie mesure et le plus rapide de la taille de l'image en octets en mémoire:
Ensuite, la taille du fichier sur le disque dépend du format du fichier:
De sortie Possible pour les 32 x 32 x 3 images de CIFAR10 dataset:
OriginalL'auteur ady
Pour trouver la Taille(En octets) d'une image à l'aide de l'Oreiller de la Bibliothèque, veuillez utiliser le code ci-dessous. Il fonctionne très bien.
Assurez-vous que vous avez d'oreiller bibliothèque installée:-
OriginalL'auteur RG Jr.