Fonction pour redimensionner des images de grande taille

cs_oceanrider Messages postés 13 Date d'inscription jeudi 18 novembre 2004 Statut Membre Dernière intervention 20 juillet 2011 - 20 juil. 2011 à 11:28
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 - 20 juil. 2011 à 13:40
Bonjour à tous,

Je me tourne vers vous car malgré mes recherches, je ne trouve pas de solution à mon problème.

J'ai recours à une fonction pour redimensionner des photos uploadées, à partir de la fonction imageCopyResampled. Tout se passe correctement en local ; par contre, une fois sur le serveur de Free, il semble bien que si la taille en pixels de l'image importée est trop grande, le redimensionnement échoue. En effet, lorsque j'envoie une image de 2560x1920 pix, pas de problème et l'image est redimensionné en quelques secondes ; par contre lorsque je tente la même chose avec une image de 3264x2448 pix, alors là, aucune image redimensionnée n'est générée (alors que tout se passe correctement en local) et la fonction n'aboutie jamais.

J'ai essayé de compresser davantage l'image sans en réduire les dimensions mais sans succès ; il semble que ce soit vraiment le nombre de pixels qui composent l'image qui pose problème.
J'ai utilisé la fonction imageCopyResized à la place de imageCopyResampled mais sans plus de succès.

Existe-t'il une autre fonction PHP ou toute autre solution qui me permettrait d'importer des images sans avoir à les réduire au préalable ?

Merci à tous de votre participation.

_________________________________________________________________________________________________
Ci-dessous la fonction utilisée : (c) Slooz

$img = imagecreatefromjpeg ($this->appFolder () . "../bucket/$file");
list($img_width, $img_height, $img_type, $img_attr) = getimagesize($this->appFolder () . "../bucket/$file");

if ($img_width / $img_height > $settings["ImportWidth"] / $settings["ImportHeight"]) {
$new_height = $img_height * $settings["ImportWidth"] / $img_width;
$new_width = $settings["ImportWidth"];
} else {
$new_width = $img_width * $settings["ImportHeight"] / $img_height;
$new_height = $settings["ImportHeight"];
}
$nimg = imagecreatetruecolor ($new_width, $new_height);
imagecopyresampled ($nimg, $img, 0, 0, 0, 0, $new_width, $new_height, $img_width, $img_height);

imagejpeg ($nimg, $this->imgFolder () . $destfile, $settings["ImportQuality"]);
imagedestroy ($nimg);

3 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
20 juil. 2011 à 11:51
Salut,


Existe-t'il une autre fonction PHP ou toute autre solution qui me permettrait d'importer des images sans avoir à les réduire au préalable ?

Malheureusement ça fait des lustres que je n'ai pas travaillé avec ces fonctions.
... peut être qu'un changement d'hébergeur ... ^^

mais avant il convient d'identifier clairement le problème.
Peut être accroches tu un time_limit, max_input_time, limite de ressource ou autre quelque part ?
A ta place je commencerais par mettre des mouchards un peu partout (affichage des temps d'exécution, affichage des erreurs, ...)
Evidemment si l'appel du script se fait dans une balise image il conviendra de modifier.

Une fois trouvé, la solution, s'il en existe une, sera plus facile à mettre en place.

Cordialement,


Kohntark -
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
20 juil. 2011 à 13:24
bonjour

chez free ...

le php.ini tu y pas accés

?upload_max_filesize = 10M
?post_max_size = 10M


peu etre que free limite la taille des fichiers
sur le serveur demande leur directement


Bonne programmation !
0
cs_47 Messages postés 197 Date d'inscription mardi 20 janvier 2004 Statut Membre Dernière intervention 20 février 2013 1
20 juil. 2011 à 13:40
Bonjour,

je serais plus tenté par, le script s’arrête à cause d'un dépassement du memory_limit (chargé une image en 3264x2448 doit prendre plus de 30M en mémoire)

bonne après midi
0
Rejoignez-nous