Grandes images et php

Résolu
Bonjour,
j'aurais aimé savoir s'il était possible de gérer des images de plus de 2Mo avec les fonctions php telles que imagetruecolor ou imagecopyresampled etc... enfin la série habituelle. je souhaiterai pouvoir introduire des photos d'appareils récents c'est à dire d'environ 3,5Mo en général.
si ces fonctions ne peuvent pas gérer une telle capacité, comment puis-je alors procéder pour réaliser ma galerie d'image?

merci d'avance
Configuration: Windows XP
Firefox 3.0.7

5 réponses

  1. Salut!

    C'est pas mon habitude de filer un code tout fait.. Mais je sais ce que c'est que la galère..

    function resizeImg($filename, $max_size, $destfile) {

    //load image

    $imgsrc = imagecreatefromjpeg($filename);

    if ($imgsrc == '') {

    $echo = "problem while loading image...";

    exit;

    }

    //calculate size

    $src_h = imagesy($imgsrc);

    $src_w = imagesx($imgsrc);

    if (($src_h>$max_size)||($src_w>$max_size))

    {

    if ($src_h > $src_w) {

    $ratio = $src_h / $src_w;

    $dest_h = $max_size;

    $dest_w = $dest_h / $ratio;

    } else {

    $ratio = $src_w / $src_h;

    $dest_w = $max_size;

    $dest_h = $dest_w / $ratio;

    }

    $imgdest = imagecreatetruecolor($dest_w, $dest_h);

    imagecopyresampled($imgdest, $imgsrc, 0, 0, 0, 0, $dest_w, $dest_h, $src_w, $src_h);

    if ( $destfile == '' ) $destfile = $filename;

    imagejpeg($imgdest, $destfile);

    imagedestroy($imgdest);

    }

    else

    {

    if (($destfile!='')&&(($src_h<600)||($src_w<600)))

    Copy($filename,$destfile);

    if (($max_size=220)&&(($src_h<220)||($src_w<220)))

    Copy($filename,$destfile);

    }

    imagedestroy($imgsrc);

    }

    Bonne soirée
    0
    1. Ami Terrien, pour traiter de grandes images, n'oublie pas également d'utiliser en premier lieu :

      ini_set('memory_limit','32M'); // Ou plus ...

      (Ce ne sera ptet pas utile, ça dépend du type d'hébergement utilisé)
      0
      1. Je t'ai peut-être répondu une connerie suivant ce que tu veux faire...
        dans ton upload, précise :
        ini_set('memory_limit', 8000000); // en octets
        
        	set_time_limit(600); // en secondes
        
        	$extensions_ok = array('png', 'gif', 'jpg', 'JPG', 'jpeg', 'JPEG');
        
        	$taille_max = 8000000;
        
        	$dest_dossier = 'ton chemin';
        
        	// utilise également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
        
        	// vérifications
        
        	if( !in_array( substr(strrchr($_FILES['image']['name'], '.'), 1), $extensions_ok ) )
        
        	{
        
        		$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
        
        	}
        
        	elseif( file_exists($_FILES['image']['tmp_name'])
        
        	and filesize($_FILES['image']['tmp_name']) > $taille_max)
        
        	{
        
        		$erreur = 'Votre fichier doit faire moins de 500Ko !';
        
        	}
        
        	// copie du fichier
        ...
        0
        1. Aussi, il te faudra penser à aller modifier ton php.ini et mettre le MAX_FILE_SIZE à plus de 2MO (la valeur généralement utilisée). Si t'es sur un hébergement mutualisé, ce ne sera pas possible.
          0
          1. ok merci, ben comme je suis chez free, je pense que c'est pas la peine de réver..!
            j'ai plus qu'à les redimensionner avant, pas très drôle étant donné que je veux me servir de ça durant mon voyage pour faire partager mes photos...

            enfin, merci quand meme, ton code m'a bien aidé quand meme sebshiva!
            0