question Un script de galerie photos (miniatures)

Répondre
maxroucool
le 07/12/2005 à 19:10
maxroucool
Slt tlm,

j'utilise le script de galerie photos (miniatures) depuis un petit moment, et il est vraiment cool, mais je ne comprends absolument pas comment il marche! c'est pour ca que je vous pose cette question!

j'ai une image qui fait 151*35 avant traitement, je donne a $ratio la valeur 90, et l'image apres traitement fais 388*90. Or ce que je voudrais c'est que cette image qui est en mode paysage ait pour largeur 90, et non pas qu'elle ait 90 en hauteur.

J'espere que vous m'avez compris, car j'ai pas l'impression d'avoir ete trop claire!


Merci bp!
+++
i M@N
le 07/12/2005 à 19:22
i M@N
Hello !

bah c'est des maths ...

J'ai pas ta source mais un ratio c'est un rapport comme un pourcentage ... 10/100 = 0.1

T'as essayé avec $ratio = 0.9 ?

@+...
One Love, One Heart, One Unity.
maxroucool
le 07/12/2005 à 21:26
maxroucool
non, dans ce script, $ratio represente un nombre de pixel, donc je dois mettre 90.
Seulement, ce cette valeur est appliquée a la hauteur de l'image, alors que je voudrais qu'elle soit appliquée à la largeur
i M@N
le 07/12/2005 à 21:28
i M@N
Reuh ...
J'ai pas ta source


@+...
One Love, One Heart, One Unity.
maxroucool
le 07/12/2005 à 21:53
maxroucool
a dsl, j'ai encore oublié!

En fait, j'ai exactement repris la deuxieme methode décrite dans ce "comment faire": [url]http://www.lephpfacile.com/howto/index.php?p=12[/url]

<?php
// on défini notre ratio pour nos miniatures (CF. plus haut pour des explications
$ratio = 150;
// on défini le répertoire qui contient nos images de grande taille
$dir = './pics';

// si aucune image n'est donnée en arguments, on redirige le visiteur vers l'accueil de la galerie
if (!isset($_GET['f'])) {
header('location: index.php');
exit();
}
else {
// on récupère le nom de fichier à miniaturiser
$image = $_GET['f'];
// on récupère les infos de cette image
$tableau = @getimagesize('./pics/'.$image);
// si il ne s'agit pas d'un fichier image, on redirige le visiteur vers l'accueil de la galerie
if ($tableau == FALSE) {
header('location: index.php');
exit();
}
else {
// si notre image est de type jpeg
if ($tableau[2] == 2) {
// on crée une image à partir de notre grande image à l'aide de la librairie GD
$src = imagecreatefromjpeg($dir.'/'.$image);
// on teste si notre image est de type paysage ou portrait
if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
// contrairement au premier cas où l'on créait un fichier sur le disque dur, ici, comme on génère des images à la volée, on envoie un header au navigateur web du visiteur lui disant que le fichier mini.php va en fait générer une image de type jpeg, soit du type mime image/jpeg.
header ("Content-type: image/jpeg");
imagejpeg ($im);
}
elseif ($tableau[2] == 3) {
$src = imagecreatefrompng($dir.'/'.$image);
if ($tableau[0] > $tableau[1]) {
$im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
}
else {
$im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
}
header ("Content-type: image/png");
imagepng ($im);
}
}
}
?>



Merci beaucoup!
+++
i M@N
le 08/12/2005 à 11:31
i M@N
Hello !

En fait il suffisait d'inverser une partie du code original : http://www.lephpfacile.com/wall/wall.php?id=2513

J'ai commenté ce que j'ai inversé et j'ai ajouté les variables $width, $height et $type pour plus de clarté.

La prochaine fois utilise le wall parce que t'as bousillé la mise en page du forum là. smiley

@+...
One Love, One Heart, One Unity.
maxroucool
le 08/12/2005 à 20:34
maxroucool
OK merci beaucoup, je vais voir tout ca, et desolé, la prochaine fois je penserais au wall!

Merci!
+++
Bzh
le 08/12/2005 à 21:01
Bzh
<?php

/////////////////////////////////////
header ("Content-type: image/png");//
imagepng ($im);//////////////////////
/////////////////////////////////////

/////////////////////////////////////
header ("Content-type: image/jpeg");/
imagejpeg ($im);/////////////////////
/////////////////////////////////////

?>


Il est vraiment déconseillé de générer des miniatures à la volé !!!!

Ou alors tu as vraiment un très bon hébergeur !!!!

Il est vraiment préférable de les générer qu' une seule fois et de les garder sur ton serveur !!!!

Bye...
maxroucool
le 09/12/2005 à 19:41
maxroucool
OK je vais y reflechir, mais en effet, mon hebergeur est plutot pas mal!

Merci +++
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours