Page 1 sur 1

Redimensionnement d'image jpg

Posté : 15 juin 2006, 11:54
par Moker
Bonjour, voila je cherche à redimensionner une image dynamiquement aprés son ajout dans une base de donnée.
Pour cela j'utilise le code suivant :
<?php

function miniatures($img){

	function img_resize($img,$width,$height){
	
		// Repertoire de l'image source
		$imgpath = "photos/";
		
		// Chemin complet de l'image source
		$filename = $imgpath.$img;
		
		// Repertoire destination de la miniatiure
		$thumbs = $width."x".$height."/";
		
		// Cacul des nouvelles dimensions
		list($width_orig, $height_orig) = getimagesize($filename);
		
		if ($width && ($width_orig < $height_orig)){
			$width = ($height / $height_orig) * $width_orig;
		}else{
			$height = ($width / $width_orig) * $height_orig;
		}
		
		// Redimensionnement
		$image_p = imagecreatetruecolor($width, $height);
		$image = imagecreatefromjpeg($filename);
		imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
		
		// Creation de l'image
		imagejpeg($image_p, $imgpath.$thumbs.$img, 100);
	}
	
	img_resize($img,45,45);
	
}

miniatures("lol.jpg");

?>
Seulement j'obtient cette erreur :

Code : Tout sélectionner

Warning: imagejpeg(): Unable to open 'photos/45x45/lol.jpg' for writing in c:\program files\easyphp1-8\www\test\miniatures.php on line 27
je ne comprend pas cette miniature devrait exister grace à imagecopyresampled non ?!?

est-ce que quelqu'un voit d'ou viens l'erreur ?

Merci d'avance :lol:

Re: Redimensionnement d'image jpg

Posté : 15 juin 2006, 12:08
par Vorkosigan
est-ce que quelqu'un voit d'ou viens l'erreur ?
C'est tres simple, soit elle n'existe pas, soit elle n'est pas accessible en ecriture.
Il faudrait mettre des traces pour savoir ce qu'il en est reellement.

Posté : 15 juin 2006, 13:18
par Devether
Moi je ne vois pas l'interet d'avoir une fonction dans une fonction.

surtout que la fonction miniatures() n'ajoute rien par rapport a img_resize()

pourquoi est ce que tu ne fais pas :
function miniatures($img,$width,$height){
    
        // Repertoire de l'image source
        $imgpath = "photos/";
        
        // Chemin complet de l'image source
        $filename = $imgpath.$img;
        
        // Repertoire destination de la miniatiure
        $thumbs = $width."x".$height."/";
        
        // Cacul des nouvelles dimensions
        list($width_orig, $height_orig) = getimagesize($filename);
        
        if ($width && ($width_orig < $height_orig)){
            $width = ($height / $height_orig) * $width_orig;
        }else{
            $height = ($width / $width_orig) * $height_orig;
        }
        
        // Redimensionnement
        $image_p = imagecreatetruecolor($width, $height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
        
        // Creation de l'image
        imagejpeg($image_p, $imgpath.$thumbs.$img, 100);

    
}

miniatures("lol.jpg",45,45); 

Posté : 15 juin 2006, 14:48
par Moker
j'ai honte d'avoir fait une erreur si bete :oops:

ma fonction miniatures fait bien son travail c'etait moi qui n'avait pas créer les bon repertoires ( photos/50/ au lieu de photos/50x50/ ) merci Vorkosigan.

par contre img_resize est dans miniatures pour pouvoir créer plusieur miniatures en apelent une seule fois la fonction :
<?php 

function miniatures($img){ 

    function img_resize($img,$width,$height){ 
     
        // creation de la miniature

    } 
     
    img_resize($img,50,50); 
    img_resize($img,100,100); 
    img_resize($img,150,150); 
     
} 

miniatures("lol.jpg"); 

?> 
en tout cas merci à tous les deux :wink: