Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > Imagick
Imagick Forum d'entraide pour l'extension Imagick permettant de manipuler des images en PHP (port de l'API ImageMagick).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/01/2007, 11h48   #1
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 4
Points : 4
Par défaut [ImageMagick] imagecreatefromjpeg limité à des photos de 2400 pixels

Bonjour,

J'utilise un script php pour redimensionner des photos et créer des avatars. J'ai utilisé plusieurs scripts différents et malgres tout, je n'arrive pas à redimensionner des images dont la taille dépasse les 2400 pixels quelle que soit le poid.
Après quelques test, je m'aperçoit que le script s'arrete à "imagecreatefromjpeg".

Y'a t'il un moyen de contourner le "imagecreatefromjpeg", cela provient-il de mon hébergment (1and1) ou est-ce un autre probleme ?

Merci de m'avoir lu.
tel22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 12h21   #2
Rédacteur
 
Avatar de doctorrock
 
Homme Julien Pauli
Architecte de système d'information
Inscription : mai 2006
Messages : 597
Détails du profil
Informations personnelles :
Nom : Homme Julien Pauli
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : mai 2006
Messages : 597
Points : 5 015
Points : 5 015
Problème de mémoire, il faut savoir que PHP charge l'image en memoire et est limité par son memory_limit.

tu peux utiliser ini_set('memory_limit'), pour augmenter la mémoire, si tu as accès à une telle fonction (et en général sur du mutualisé, tu n'as pas accès à de telles fonctions ).

Tu peux trouver plus de renseignements, dans les commentaires de http://fr3.php.net/manual/fr/functio...tefromjpeg.php
doctorrock est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2007, 13h59   #3
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 4
Points : 4
Merci pour la réponse.

Je viens de voir que mon memory limit est fixé à 40Mo. Cela ne suffit pas ?
Mais ce que je ne comprends surtout pas c'est que si j'utilise la fonction ini_set('memory_limit'), ça veut dire que ça va me donner plus que 40Mo ?! Ca fait beaucoup pour une image de 3000 pixels de large !

En tout cas merci bcp pour le lien.
tel22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 00h46   #4
Invité de passage
 
Inscription : février 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 2
Points : 2
Points : 2
Par défaut Même problème

Bonjour,

Je suis également chez 1&1 et cela fait bientôt une semaine que je me heurte au même problème.

En fait, je ne formulerais pas la contrainte par 2400 pixels mais par l'équation suivante :

(Largeur * Hauteur)/(1024²) < 2,4

Ne me demandez pas pourquoi, je n'en sais rien mais je l'ai établi après une centaine de tests.

1&1 bloque le ini_set ainsi que l'instruction dans le .htaccess

Si qq a une idée pour contourner, je suis preneur ! Quand on voit des sites comme pixmania qui joue avec les images facilement, il doit y avoir moyen...

Merci d'avance.
pimalys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 08h42   #5
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 4
Points : 4
Bonjour,

J'ai recemment appelé le service technique 1and1 qui me fait bien rire puisque c'est une receptionniste qui tente, tant bien que mal, de me retranscrire les infos qu'elle va demander au vrai technicien à chacune de mes questions.
Bref... là n'est pas le problème.

On m'a simplement répondu que l'image d'origine + l'image redimensionnée ne devait pas dépasser les (valeur très approximatives m'ont-ils dit) 12 Millions de pixels.

La solution dans notre cas étant de passer d'un hebergement mutualisé à un serveur dédié. Il n'y aurait aucun soucis, on pourrait toucher au memory_limit (d'ailleurs, Pixmania n'est certainement pas mutualisé =) ceci explique cela). Ce qui dans mon cas, me ferai passer de 0€ par mois (j'ai l'offre premium gratuite pendant 3 ans) à 60€ minimum par mois...

En tout cas chapeau pour la formule ^^. Malgres tout, elle ne s'applique pas pour mon cas. J'arrive à redimenssionner des images qui font 2000 * 1500 pixels.

Voila... Mais appel le service technique pour te marrer un coup =) Elles sont malgres tout très charmantes.
tel22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 16h09   #6
Invité de passage
 
Inscription : février 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 2
Points : 2
Points : 2
Je me doutais bien également que le serveur dédié était la solution...

Tant pis ! Je suis par contre étonné que tu arrives à redimensionner une image de 2000 * 1500 pixels, étant moi-même en offre premium pour 2 ans encore.

Tu as du JPG au départ ou un autre format ? Connais tu le type d'encodage (les miennes viennent d'un appareil photo numérique, en haute qualité et je crois que c'est du 24 bits couleurs).
pimalys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2007, 17h28   #7
Invité de passage
 
Inscription : avril 2006
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 22
Points : 4
Points : 4
Je saurais pas vraiment te dire le type d'encodage surtout que c'est une photo que j'ai du redimensionner avec photohop... Tout ce que je peux te dire c'est qu'elle fait 2Mo.
tel22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/08/2008, 10h32   #8
Invité de passage
 
Inscription : octobre 2007
Messages : 1
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 1
Points : 1
Points : 1
Par défaut Après quelques essais

Bonjour tout le monde.

Je suis hébergé sur 1and1 en pack perso confort et j'ai eu le même problème.
Je viens de faire des tests avec des tas résolutions différentes et j'en arrive aux conclusions suivantes :
Ca marche avec des résolutions inférieures ou égales à 1605*2139 (quelque soit le poids) mais plus avec des résolutions supérieures ou égales à 1605*2140.
En gros, il faut pas se focaliser trop sur ces chiffres mais si l'image dépasse 3433095px environ, c'est mort

Bon courage...
d-dez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2010, 11h15   #9
Invité de passage
 
Tony
Inscription : octobre 2010
Messages : 1
Détails du profil
Informations personnelles :
Nom : Tony

Informations forums :
Inscription : octobre 2010
Messages : 1
Points : 1
Points : 1
Bonjour,

J'ai eu le même problème avec la fonction imagecreatefromjpeg() et j'ai pu contourner partiellement le problème en utilisant la fonction imagejpeg() de la manière suivante :

$im = imagecreatetruecolor($src_width, $src_height);
$img_src = imagejpeg($im, $chemin_vers_image_a_redimensionner);

$img_dest = imagecreatetruecolor($dest_witdh, $dest_height);

imagecopyresampled($img_dest, $img_src, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);

Le script s'exécute correctement jusque la 3ème instruction mais rencontre le même problème lors du imagecopyresampled(...)
Mininoich est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2010, 16h56   #10
Membre Expert
 
Inscription : septembre 2010
Messages : 1 247
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 247
Points : 1 571
Points : 1 571
Pour éviter de faire planter le script à cause d'un dépassement mémoire, j'avais trouvé ce script qui à l'air de fonctionner :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$infos = getimagesize($_FILES['photo']['tmp_name']);
$width = $infos[0];
$height = $infos[1];
$bit = $infos['bits'];
$channel = $infos['channels'];
//en octets
$m_used = memory_get_usage();
//en Mo
$mem_used = round($m_used / pow(1024,2),2).'M';			
//calcul de mémoire utilisé pour le traitement de l'image
$m_need = round(($width * $height * $bit * $channel / 8 + pow(2, 16)) * 1.65); 			
//la memoire limite du server
$m_limit = (integer) ini_get('memory_limit') * pow(1024, 2);			
//la mémoire à allouer pour eviter la Fatal error
$m_aloc = $m_need - $m_limit;
$m_aloc += $m_used;//on ajoute la mémoire déjà utilisé
//on convertit en Mo
$memory = round($m_aloc / pow(1024,2),2);
echo "<hr />taille: $width x $height px<br />nb de bits: $bit<br />canaux: $channel<hr /><br />";
echo 'Memoire utilisé par le script : '.$mem_used;
echo '<hr />Mémoire utilisée pour la redimension : '.round($m_need / pow(1024,2),2).'M ';
echo '<hr />Mémoire possible : '.round($m_limit / pow(1024,2),2).'M<br />';
echo "<hr />Manque de mémoire : $memory M<br />";
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h25.


 
 
 
 
Partenaires

Hébergement Web