Comment obtenir une ressource d'image à la taille, en octets, avec PHP et GD?
Je suis le redimensionnement d'images avec php gd. Le résultat est à l'image des ressources que je veux le télécharger sur Amazon S3. Il fonctionne très bien si je stocker les images sur le disque en premier, mais je tiens à les télécharger directement à partir de la mémoire. C'est possible si je sais juste que la bytesize de l'image.
Est-il un moyen d'obtenir la taille (en octets) d'une image gd ressources?
Vous ne pouvez pas télécharger les ressources.
OriginalL'auteur Martin | 2010-10-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser PHP mémoire de flux d'e/s pour enregistrer l'image et par la suite obtenir la taille en octets.
Ce que vous faites est:
Maintenant, vous devez connaître la taille
Je ne sais pas du tout (gd)méthode pour obtenir la taille d'une ressource d'image.
gd
fonctions s'attendre à un chemin, pas un fichier de ressources, à écrire. Cela devrait fonctionner avec le tampon de sortie à la place.Vous devriez être en mesure de fournir un chemin comme:
php://memory/resource=img.jpeg
Excellent, bonne explication.
Ah joli! Cela permettra d'utiliser le double de la mémoire si il n'est donc pas optimal, mais une bonne alternative 🙂
Ce travail?
OriginalL'auteur Dennis Haarbrink
Je ne peux pas écrire sur php://mémoire avec imagepng, j'ai donc utiliser ob_start(), ob_get_content() fin ob_end_clean()
ob_get_length
comme @JonathanWren suggéré?OriginalL'auteur Worms
Cela fonctionne aussi:
Et maintenant
$size
aurez votre taille en octets.OriginalL'auteur Jonathan Wren
Vous pourriez regarder la réponse suivante pour obtenir de l'aide. Il travaille pour le générique de changements de la mémoire en php.
Bien que depuis la surcharge pourrait être en cause, il serait peut-être plus d'une estimation.
L'obtention de la taille des objets PHP
OriginalL'auteur CtRanger
Enregistrer le fichier image dans le format de votre choix pour un tmp dir, et ensuite utiliser filesize() http://php.net/manual/de/function.filesize.php avant de le télécharger pour S3 à partir du disque.
L'enregistrement d'un temp-fichier sur le disque est exactement ce que j'essaie d'éviter ici.
Pourquoi? Il n'est pas beaucoup d'un problème de performance et permet d'économiser beaucoup de RAM.
OriginalL'auteur joni