2010-02-17 4 views
1

Quelle est la largeur et la hauteur maximales que ImageCopyResampled peut gérer? Mon code fonctionne pour les images plus petites en termes de largeur et de hauteur. Pour les images plus grandes, les coordonnées ne seront pas prises en compte, ce qui signifie que le recadrage commence dans le coin supérieur gauche de l'image.PHP - ImageCopyResampled taille maximale

Y a-t-il une solution de contournement? En voici une partie:

$trgt_width = 500; 
      $trgt_height = 400; 
      if(copy($src_file, $trgt_file)): 
       $src_image = imageCreateFromJpeg($src_file); 
       $trgt_image = imageCreateTrueColor($trgt_width, $trgt_height); 
       imageCopyResampled($trgt_image, $src_image, 0, 0, $x, $y, $trgt_width, $trgt_height, $width ,$height); 
       imageJpeg($trgt_image, $thumb_file, 75); 
      endif; 

Merci.

+0

Est-ce vous? http://stackoverflow.com/questions/2274266/php-problem-with-imagecopyresampled Si c'est le cas, pourquoi ouvrez-vous de nouveaux comptes pour poser de nouvelles questions? –

+0

Ouais, désolé à ce sujet. Juste décidé d'utiliser une adresse e-mail différente depuis que j'ai entré un mauvais pour le premier compte. Merci pour votre réponse. – mist

Répondre

2

Cela dépend de la quantité maximale de RAM que vos scripts peuvent occuper. Ceci est généralement défini sur votre serveur par l'administrateur. Le paramètre est appelé memory_limit

Vous pouvez le trouver en utilisant phpinfo() et en recherchant "memory_limit".

Un calcul approximatif de la taille nécessaire pour redimensionner une image:

number of bytes width x number of bytes height x 3 

3 pour chaque canal d'une véritable image en couleurs: rouge, vert et bleu. Ainsi, une image de taille 1000 x 1000 pixels occupera au moins 3 Mo de mémoire. Probablement plus lors du processus de redimensionnement, car la fonction devra conserver à la fois la version grande et la version redimensionnée en mémoire.

Dans votre cas cependant, je suppose que l'image ne se recadrée pas du tout, probablement parce que l'opération de copie échoue parce que $src_file n'existe pas du tout.

+0

Merci pour la réponse, mais le problème est avec le CSS. Fondamentalement ce que je fais est de télécharger un fichier image via ajax, puis le charger immédiatement dans la même page, affichée avec une "largeur maximale" de 700px. Là Im en utilisant le plugin "Jcrop" pour gérer les dimensions de recadrage et en envoyant une telle méthode post. Au début, le code fonctionnera pour les images dont la largeur ne dépasse pas 700px. Comme cela ne fonctionnera pas pour les largeurs supérieures à 700px, je viens de supprimer la propriété max-width et maintenant cela fonctionne. Je sais que c'est assez absurde du point de vue de la programmation et que de meilleures explications se cachent derrière. – mist

+0

Ensuite, le problème n'est pas principalement le script PHP, mais les données que le plugin de culture vous envoie. Qu'est-ce qu'une sortie de test de tous les paramètres de recadrage passés à votre script vous donne? (probablement 'print_r ($ _ GET);') –