Chargement de miniature

Répondre
Suta
le 20/03/2010 à 15:25
Suta
Bonjour,

J'ai creer un fichier php pour afficher des miniatures :

<?php
$largeur = "180";
$hauteur ="180";
header("Content-Type: image/jpeg");
$img_in = imagecreatefromjpeg('./pics/'.$_GET['f']);
$img_out = imagecreatetruecolor($largeur, $hauteur);
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
imagejpeg($img_out);
?>


Lorsque l'image d'origine est de taille petite et moyenne (a peu pres moins de 1Mo et) ça fonctionne. Par contre des que l'image est trop grande ca m'affiche rien a part l'icone brisée indiquant l'emplacement de l'image...

Est ce que qqun aurait la solution a ce probleme ?

Sinon y a t'il un autre moyen de creer des miniatures ?

Merci d'avance !
LA GLOBULE
le 20/03/2010 à 17:50
LA GLOBULE
Surement que ton PHP génère une erreur.

Tu peux la voir (si ton php affiche les erreurs) en mettant un header de type text/plain et non image/jpeg et en affichant directement l'URL de l'image.
Suta
le 20/03/2010 à 18:10
Suta
Merci de ta réponse rapide.

J'ai fait un test en changeant le header comme tu me l'a indiqué, j'ai aussi changer la variable par le chemin du fichier image source (disons pour plus de facilité).

<?php
$largeur = "180";
$hauteur ="180";
header("Content-Type: text/plain");
$img_in = imagecreatefromjpeg('./pics/not.jpg');
$img_out = imagecreatetruecolor($largeur, $hauteur);
imagecopyresampled($img_out, $img_in, 0, 0, 0, 0, imagesx($img_out), imagesy($img_out), imagesx($img_in), imagesy($img_in));
imagejpeg($img_out);
?>


Si le fichier not.jpg est trop gros (1,5Mo a peu pres) j'obtiens le message d'erreur :

Error 500 - Internal server error

Un problème inattendu est survenu.
Veuillez réessayer ultérieurement.


par contre une image de 600Ko s'affiche en miniature sans probleme...

En local par contre le code fonctionne pour toute les image quelque soit leur poids ou leur taille.

Ce doit donc etre un probleme venant du serveur.

Mais c'est maintenant la que je coince, pourquoi le serveur ne veux t il pas traiter ce code si l'image est trop grande ?

Timout ?

Comment palier au probleme ?

Peut-on configurer les parametres du serveur sachant que je suis hebergé sur du mutualisé (1and1) ?
LA GLOBULE
le 20/03/2010 à 18:37
LA GLOBULE
Une erreur 500, c'est une erreur serveur.
Le plus simple, c'est de contacter le support de 1and1. Ils pourront t'en dire beaucoup plus que nous :/

PS : on ne pallie pas à quelque chose, on pallie quelque chose :)
LA GLOBULE
le 20/03/2010 à 18:44
LA GLOBULE
Pas sur.

- Nombre de processus en simultanés : a prioti, tu en as qu'un
- Limite Mémoire : je pense pas que redimensionner une image de 1,5 Mo consomme 32 de RAM en php (tu peux le vérifier sur ton espace de développement avec la fonction memory_get_peak_usage, mais normalement, php doit claquer une erreur si le script consomme plus de RAM que ce qui est autorisé)
- Durée Maxium de Calcul : en général, cela ne prend pas 10 pour redimensionner une image. Si le serveur est vraiment un escargot, normalement php devrait te claquer une erreur du genre "maximum execution time"

D'habitude, si tu fais un .php qui génére des erreurs sur ton hebergement, php affiche les erreurs ou bien apache balance une erreur 500 ?
Suta
le 20/03/2010 à 18:52
Suta
Erf... alors la je suis bloqué.

En dehors du fait que 1and1 ne m'autorise pas a exécuter mon script du fait que mon image a une trop grosse résolution, je ne vois pas d'où peut venir ce problème.

Aurais tu une piste pour mes recherches ?
LA GLOBULE
le 20/03/2010 à 19:24
LA GLOBULE
Es tu sur que le problème vient du poids ?

As tu testé la RAM consommée et le temps d'execution sur ton environnement local ?
Parce que à mon avis, ce n'est pas cela qui bloque.

Mais si le problème vient de la, tu n'as pas beaucoup de solution : soit prendre un serveur dédié soit prendre une offre mutualisée plus adaptée, soit générer les miniatures sur ton pc et les uploader automatiquement, soit une autre solution.
Suta
le 20/03/2010 à 19:42
Suta
Bon effectivement jai fait une batterie de test et il semble que certaines photos soient accepté et pas d'autre.

Est il possible qu'un jpeg puisse etre different d'un autre (sans prendre en compte sa taille ou son poids) ? Je veux dire par la qu'il contienne des informations qui ne permette pas a certaine fonction php d'interagir avec le fichier (getimagesize par exemple) ?
Suta
le 20/03/2010 à 19:54
Suta
Bon euh je me suis precipité...
La photo qui ne marche pas a une résolution de 2560. En dessous de cette résolution toute les images s'affichent. Au dessus elle ne s'affichent plus.

Peu importe le poids de la photo d'ailleur.

Le probleme dépend donc de la résolution de l'image.

J'en conclus qu'une des fonction du script est limité si l'image a traiter a une trop grande résolution...

Il me reste plus qu'a savoir laquelle et trouver une alternative.

Merci pour ton aide la globule :) !
Répondre
LoadingChargement en cours