beber24 Posté 22 Décembre 2006 Posté 22 Décembre 2006 Bonjour, Je voudrais savoir si il existe quelquepart en téléchargement libre un script php tel que : http://tools.dynamicdrive.com/imageoptimizer/ ou celui là ? http://www.webmycar.net/myscripts/image-reduction.php Merci à vous
Fabrice11 Posté 22 Décembre 2006 Posté 22 Décembre 2006 (modifié) Bonjour, j'ai trouvé sur le net une fonction qui retaille les images en PHP. En fait, tu donne le chemin de l'image et il te crée une autre image aux dimensions choisies dans un répertoire. La fonction: /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////* * Fonction qui crée un thumnail avec les coin ronds et un effet sur l'image lors d'un rollOver * _AT_param img_src : STRING (Chemin vers l'image cible [OBLIGATOIRE]) * _AT_param w_thumb : STRING (largeur de la thumbnail désiré [OBLIGATOIRE]) * _AT_param h_thumb : STRING (hauteur de la thumbnail désiré [OBLIGATOIRE](POSSIBILITÉ DE METTRE 0 COMME VALEUR, DANS CE CAS UN REDIMENSIONNEMENT PROPORTIONNELLE EST EFFECTUÉ)) * _AT_param border : STRING ( Épaisseur de la bordure de l'effet over [OPTIONNEL][DEFAULT:10]) * _AT_param radial : STRING (Rayon utilisé pour créer les coins ronds [OPTIONNEL][DEFAULT:10](Un rayon de 0 équivaut a aucun coin rond)) * _AT_param alpha : STRING ( Détermine le niveau de transparence de l'effet Over [OPTIONNEL][DEFAULT:50](100 aucune transparence / 0 transparence complète)) * _AT_return : Renvoi un thumnail avec les coin ronds et un effet sur l'image lors d'un rollOver*/ function createThumbWithOver($img_src,$w_thumb,$type='gif',$h_thumb=0,$border=0,$radial=0,$alpha=0){/*<img <?php echo createThumbWithOver('bleutree.jpg',400,100,10,0,50); ?> style="cursor:pointer;" />*/ $pic['destOver']['name'] = md5($img_src.$w_thumb.$h_thumb.$border.$radial.$alpha.'over'); // nom du fichier over $pic['destNormal']['name'] = md5($img_src.$w_thumb.$h_thumb.$border.$radial.$alpha); // nom du fichier normal $makePic = false; // variable pour vérifcation is on cré les images ou non // Routine pour vérifier si le fichier cache existe et si il est plus vieux que l'image d'origine if(file_exists("./temp/".$pic['destNormal']['name'].'.gif') === true ) { // si le fihcier existe ? if(intval(filemtime($img_src)) > intval(filemtime("./temp/".$pic['destNormal']['name'].'.'.$type))) { // si le fichier cache est plsu vieux que le fichier source $makePic = true; // fichier source est plus récent donc il faut recréer les images } else { $makePic = false; // le fichier sourve est plsu vieux que le fichier cache donc on ne le recré pas } } else { $makePic = true; // si le fihcier cache n'existe pas il faut le créer } // Vérification de la variable , piour savoIr si on cré les images if($makePic === true && file_exists($img_src)) { // Récupération des infos de l'image source list($pic['src']['info']['width'], $pic['src']['info']['height'], $pic['src']['info']['type'], $pic['src']['info']['attr']) = getimagesize($img_src); //On vérifie si le parametre de la hauteur est plsu grand que 0 if($h_thumb == 0) { // si egal a zaro on affecte la hauteur proportionnellement $h_thumb = floor($pic['src']['info']['height'] * $w_thumb / $pic['src']['info']['width']); } switch($pic['src']['info']['type']) { case"1": $pic['src']['ress'] = imagecreatefromgif($img_src); break; // Création de l'image pour une source gif case"2": $pic['src']['ress'] = imagecreatefromjpeg($img_src); break; // Création de l'image pour une source jpg case"3": $pic['src']['ress'] = imagecreatefrompng($img_src); break; // Création de l'image pour une source png } $pic['destNormal']['ress'] = imagecreatetruecolor($w_thumb, $h_thumb); // On crée la miniature vide pour l'image Etat Normal $pic['destOver']['ress'] = imagecreatetruecolor($w_thumb, $h_thumb); // On crée la miniature vide pour l'image Etat Over // On crée la miniature Normal imagecopyresampled($pic['destNormal']['ress'], $pic['src']['ress'], 0, 0, 0, 0, $w_thumb, $h_thumb, $pic['src']['info']['width'], $pic['src']['info']['height']); // On crée la miniature Over imagecopyresampled($pic['destOver']['ress'], $pic['src']['ress'], 0, 0, 0, 0, $w_thumb, $h_thumb, $pic['src']['info']['width'], $pic['src']['info']['height']); // On commence à créer le masque pour le contour coin rond $pic['maskBorder']['ress'] = imagecreate($w_thumb, $h_thumb); // On crée le mask vide $pic['maskBorder']['green'] = imagecolorallocate($pic['maskBorder']['ress'], 0, 255, 0); // affectation de la couleur verte $pic['maskBorder']['pink'] = imagecolorallocate($pic['maskBorder']['ress'], 255, 0, 255); // affectation de la couleur rose // Ici on trace la zone à mettre en transparence avant le merge entre les 2 images // PRINCIPE : 4 cercle situé dans chauque coin avec un rayon de 2 fois la bordure // PRINCIPE : 1 forme polygonale de 8 coter pour peindre de rose la zone restante imagefilledellipse($pic['maskBorder']['ress'], $radial, $radial, $radial*2, $radial*2, $pic['maskBorder']['pink']); // cercle gauche supérieur imagefilledellipse($pic['maskBorder']['ress'], $w_thumb-$radial, $radial, $radial*2, $radial*2, $pic['maskBorder']['pink']); // cercle droite supérieur imagefilledellipse($pic['maskBorder']['ress'], $radial, $h_thumb-$radial, $radial*2, $radial*2, $pic['maskBorder']['pink']); // cercle gauche inférieur imagefilledellipse($pic['maskBorder']['ress'], $w_thumb-$radial, $h_thumb-$radial, $radial*2, $radial*2, $pic['maskBorder']['pink']); // cercle droit inférieur imagefilledpolygon ($pic['maskBorder']['ress'], array($radial,0,0,$radial,0,$h_thumb-$radial,$radial,$h_thumb,$w_thumb-$radial,$h_thumb,$w_thumb,$h_thumb-$radial,$w_thumb,$radial,$w_thumb-$radial,0), 8, $pic['maskBorder']['pink']); // forme géométrique à 8 coter imagecolortransparent($pic['maskBorder']['ress'], $pic['maskBorder']['pink']); // Applique la transparence à la couleur rose // On commence à créer le masque pour l'image over $pic['maskOver']['ress'] = imagecreate($w_thumb, $h_thumb); // On crée le mask vide $pic['maskOver']['white'] = imagecolorallocate($pic['maskOver']['ress'], 255, 255, 255); // On definis la couleur blanche $pic['maskOver']['pink'] = imagecolorallocate($pic['maskOver']['ress'], 0, 255, 0); // On definis la couleur blanche qui sera utilisé comme couleur de transparence // Ici on trace la zone à mettre en transparence avant le merge entre les 2 images // PRINCIPE : 4 cercle situé dans chauque coin avec un rayon de 2 fois la bordure // PRINCIPE : 1 forme polygonale de 8 coter pour peindre de rose la zone restante imagefilledellipse($pic['maskOver']['ress'] , $border+$radial, $border+$radial, $radial*2, $radial*2, $pic['maskOver']['pink']); // cercle gauche supérieur imagefilledellipse($pic['maskOver']['ress'] , $w_thumb-($border+$radial), $border+$radial, $radial*2, $radial*2, $pic['maskOver']['pink']); // cercle droite supérieur imagefilledellipse($pic['maskOver']['ress'] , $border+$radial, $h_thumb-($border+$radial), $radial*2, $radial*2, $pic['maskOver']['pink']); // cercle gauche inférieur imagefilledellipse($pic['maskOver']['ress'] , $w_thumb-($border+$radial), $h_thumb-($border+$radial), $radial*2, $radial*2, $pic['maskOver']['pink']); // cercle droit inférieur imagefilledpolygon ($pic['maskOver']['ress'] , array($border+$radial,$border,$border,$border+$radial,$border,$h_thumb-($border+$radial),$border+$radial,$h_thumb-$border,$w_thumb-($border+$radial),$h_thumb-$border,$w_thumb-$border,$h_thumb-($border+$radial),$w_thumb-$border,$border+$radial,$w_thumb-($border+$radial),$border), 8, $pic['maskOver']['pink']); // forme géométrique à 8 coter imagecolortransparent($pic['maskOver']['ress'] , $pic['maskOver']['pink']); // Applique la transparence à la couleur rose // TRAITEMENT SUR L'IMAGE NORMAL imagecopymerge($pic['destNormal']['ress'], $pic['maskBorder']['ress'], 0, 0, 0, 0, $w_thumb, $h_thumb, 100); // copie du masque au dessus de la miniature avec une transparence (0%) // il faut enlever le vert pour que le fond soit transparent if($radial > 0) { // si le radial est de 0 alors ne pas appliquer la transparence parce que le pixel 0,0 n'est pas vert ce qui entraine une transparence sur les zones qui on la meme couleur que le pixel 0,0 imagetruecolortopalette($pic['destNormal']['ress'], FALSE, 256); // conversion en palette 256 couleur $pic['destNormal']['green'] = imagecolorat($pic['destNormal']['ress'], 0, 0); // affectation de la couleur verte (récupérer au pixel 0,0) imagecolortransparent($pic['destNormal']['ress'], $pic['destNormal']['green']); // Applique la transparence à la couleur verte } // On enregistre la miniature avec bordure coin rond if ($type=='gif') { imagegif($pic['destNormal']['ress'],"./temp/".$pic['destNormal']['name'].'.'.$type); } else { imagepng($pic['destNormal']['ress'],"./temp/".$pic['destNormal']['name'].'.'.$type); } imagedestroy($pic['destNormal']['ress']); // TRAITEMENT SUR L'IMAGE OVER imagecopymerge($pic['destOver']['ress'], $pic['maskOver']['ress'], 0, 0, 0, 0, $w_thumb, $h_thumb, $alpha); // copie du masque au dessus de la miniature avec une transparence ($alpha) // Merge du masque du contour imagecopymerge($pic['destOver']['ress'], $pic['maskBorder']['ress'], 0, 0, 0, 0, $w_thumb, $h_thumb, 100); // copie du masque au dessus de la miniature avec une transparence ($alpha) // il faut enlever le vert pour que le fond soit transparent if($radial > 0) { // si le radial est de 0 alors ne pas appliquer la transparence parce que le pixel 0,0 n'est pas vert ce qui entraine une transparence sur les zones qui on la meme couleur que le pixel 0,0 imagetruecolortopalette($pic['destOver']['ress'], FALSE, 256); // conversion en palette 256 couleur $pic['destOver']['green'] = imagecolorat($pic['destOver']['ress'], 0, 0); // affectation de la couleur verte (récupérer au pixel 0,0) imagecolortransparent($pic['destOver']['ress'], $pic['destOver']['green'] ); // Applique la transparence à la couleur verte } // On enregistre la miniature over if ($type=='gif') { imagegif($pic['destOver']['ress'],"./temp/".$pic['destOver']['name'].'.'.$type); } else { imagepng($pic['destOver']['ress'],"./temp/".$pic['destOver']['name'].'.'.$type); } imagedestroy($pic['destOver']['ress']); } // Retourne les le code html / javascript pour afficher l'image et effectuer le rollOver / rollOut return 'src="./temp/'.$pic['destNormal']['name'].'.'.$type.'" onMouseOver="this.src=\'./temp/'.$pic['destOver']['name'].'.'.$type.'\'" onMouseOut="this.src=\'./temp/'.$pic['destNormal']['name'].'.'.$type.'\'"';} L'utilisation: <img <?php echo createThumbWithOver('toto.jpg',120,'gif');?> border="0" align="absmiddle"> Voilà, bonne journée Modifié 22 Décembre 2006 par NorSeb
HoRuSs Posté 22 Décembre 2006 Posté 22 Décembre 2006 Sinon tu peux apprendre ca te prendra pas bien plus longtemps et tu feras ce que tu veux.... http://www.siteduzero.com/tuto-3-166-1-cre...ges-en-php.html
beber24 Posté 22 Décembre 2006 Auteur Posté 22 Décembre 2006 Merci Mais vraiment ce que je cherche, c'est une foctionnalité telle que les 2 sites le proposent : avec un telechargement et une visualisation en ligne. Personne ne connais ?
silverbeach Posté 22 Décembre 2006 Posté 22 Décembre 2006 tu cherche un script qui ressemble à Reduire image?
beber24 Posté 29 Décembre 2006 Auteur Posté 29 Décembre 2006 Oui c'est ce que je cherche mais sans limitation de taille. Merci
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant