par
sylvaing26 » 15 nov. 2008, 12:50
d'accord, c'est deja ce que je fait, mais en fait ca surcharge le serveur car il y a beaucoup de miniatures a creer donc je voudrai qu'il créé, si il existe pas la miniature et qu'ensuite il l'appelle ou qu'il l'appelle directement si elle est deja crée sur le serveur.
http://hegoiseorchidees.free.fr
Lorsque l'on navigue de page en page, defois il n'y a pas toutes les miniatures de créé
En fait je souhaite reunir deux operatiosn en une pour alleger le serveur, j'ai un premier script qu cree une miniature reduite de la photo
<?
if($p == "true"){
$photo = $result['photo_fleur'];
}
else
{
$photo = $result['photo'];
}
$filename = "photos/mini_$photo";
if (!file_exists($filename)) {
$source = "/mnt/102/sdb/7/e/hegoiseorchidees/photos/$photo";
$ImageChoisie = imagecreatefromjpeg($source);
$TailleImageChoisie = getimagesize($source);
if($TailleImageChoisie[0]>$TailleImageChoisie[1])
{
//Etape 1 :
$NouvelleLargeur = 150;
//Etape 2 :
$Reduction = ( ($NouvelleLargeur * 100)/$TailleImageChoisie[0] );
//Etape 3 :
$NouvelleHauteur = ( ($TailleImageChoisie[1] * $Reduction)/100 );
}
else
{
//Etape 1 :
$NouvelleHauteur = 112;
//Etape 2 :
$Reduction = ( ($NouvelleHauteur * 100)/$TailleImageChoisie[1] );
//Etape 3 :
$NouvelleLargeur = ( ($TailleImageChoisie[0] * $Reduction)/100 );
}
//Etape 1 :
$NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
//Etape 2 :
imagecopyresampled($NouvelleImage , $ImageChoisie, 0, 0, 0, 0, $NouvelleLargeur, $NouvelleHauteur, $TailleImageChoisie[0],$TailleImageChoisie[1]);
$background_color = imagecolorallocate ($NouvelleImage, 255, 255, 255);
imagefill($NouvelleImage,0,0,$background_color);
//////////////////
$miniature = "mini_$photo";
$destination = "photos/$miniature";
ImageJpeg ($NouvelleImage,$destination, 100);
}
else
{
$miniature = "mini_$photo";
}
mysql_close();
?>
et un second que j'appelle pour ajouter le fond de la miniature a chaque fois
<?//------------------------------------------------------------------------------------------
// applcation d'un copyright sur une photo
//------------------------------------------------------------------------------------------
// on spécifie le type de fichier créer (ici une image de type jpeg)
header ("Content-type: image/jpeg");
include("admin/connect.php");
@MYSQL_CONNECT($serveur,$utilisateur,$mdp) or die ("Connexion impossible");
@MYSQL_SELECT_DB($db) or die ("Connexion à la base $base impossible");
$id = $_GET['id'];
$p = $_GET['p'];
if($p == 1){
$sql = mysql_query("SELECT * FROM orchidees WHERE id='$id'");
while($result=mysql_fetch_array($sql)){
$source = $result[photo];
$photo = "photos/mini_$source";
$fichier_copyright = $photo;
$im_copyright = ImageCreateFromJpeg ($fichier_copyright);
// on calcule la largeur de l'image correspondant à la vignette de copyright
$larg_copyright = imagesx ($im_copyright);
// on calcule la hauteur de l'image correspondant à la vignette de copyright
$haut_copyright = imagesy ($im_copyright);
// on crée deux variables contenant les chemins d'accès à nos deux fichiers : $fichier_source contenant le lien vers l'image à "copyrighter", $fichier_copyright contenant le lien vers la petite vignette contenant le copyright (bien sur, on prendra soin de placer les images sources dans un répertoire "caché" sinon le copyright ne sert à rien si les visiteurs ont accès aux images sources)
if($larg_copyright > $haut_copyright){
$fichier_source = "img/fd_miniature.jpg" ;
}
else {
$fichier_source = "img/fd_miniature_2.jpg" ;
}
// on crée nos deux ressources de type image (par le biais de la fonction ImageCreateFromJpeg)
$im_source = ImageCreateFromJpeg ($fichier_source);
$im_copyright = ImageCreateFromJpeg ($fichier_copyright);
// on calcule la largeur de l'image qui va être copyrightée
$larg_destination = imagesx ($im_source);
$haut_destination = imagesy ($im_source);
// on calcule la position sur l'axe des abscisses de la vignette
$x_destination_copyright = $haut_destination - $haut_copyright;
$y = $larg_destination - $larg_copyright - 11;
// on réalise la superposition, le dernier paramètre étant le degré de transparence de la vignette (cependant, allez voir la fin de ce même tutorial pour une définition complète de tous les arguments de cette fonction)
imageCopyMerge ($im_source, $im_copyright, 0, 0, 0, 0, $larg_copyright, $haut_copyright, 100);
// on affiche notre image copyrightée
Imagejpeg ($im_source);
}
}
elseif($p == 2){
$sql = mysql_query("SELECT * FROM orchidees WHERE id='$id'");
while($result=mysql_fetch_array($sql)){
$source = $result[photo_fleur];
$photo = "photos/mini_$source";
$fichier_copyright = $photo;
$im_copyright = ImageCreateFromJpeg ($fichier_copyright);
// on calcule la largeur de l'image correspondant à la vignette de copyright
$larg_copyright = imagesx ($im_copyright);
// on calcule la hauteur de l'image correspondant à la vignette de copyright
$haut_copyright = imagesy ($im_copyright);
// on crée deux variables contenant les chemins d'accès à nos deux fichiers : $fichier_source contenant le lien vers l'image à "copyrighter", $fichier_copyright contenant le lien vers la petite vignette contenant le copyright (bien sur, on prendra soin de placer les images sources dans un répertoire "caché" sinon le copyright ne sert à rien si les visiteurs ont accès aux images sources)
if($larg_copyright > $haut_copyright){
$fichier_source = "img/fd_miniature.jpg" ;
}
else {
$fichier_source = "img/fd_miniature_2.jpg" ;
}
// on crée nos deux ressources de type image (par le biais de la fonction ImageCreateFromJpeg)
$im_source = ImageCreateFromJpeg ($fichier_source);
$im_copyright = ImageCreateFromJpeg ($fichier_copyright);
// on calcule la largeur de l'image qui va être copyrightée
$larg_destination = imagesx ($im_source);
$haut_destination = imagesy ($im_source);
// on calcule la position sur l'axe des abscisses de la vignette
$x_destination_copyright = $haut_destination - $haut_copyright;
$y = $larg_destination - $larg_copyright - 11;
// on réalise la superposition, le dernier paramètre étant le degré de transparence de la vignette (cependant, allez voir la fin de ce même tutorial pour une définition complète de tous les arguments de cette fonction)
imageCopyMerge ($im_source, $im_copyright, 0, 0, 0, 0, $larg_copyright, $haut_copyright, 100);
// on affiche notre image copyrightée
Imagejpeg ($im_source);
}
}
?>
Je voudrais savoir comment zapper l'operation 1, appliquer le fond sans sauvegarder une miniature de la photo et sauvegarder plutot la miniature finale.
d'accord, c'est deja ce que je fait, mais en fait ca surcharge le serveur car il y a beaucoup de miniatures a creer donc je voudrai qu'il créé, si il existe pas la miniature et qu'ensuite il l'appelle ou qu'il l'appelle directement si elle est deja crée sur le serveur.
[url]http://hegoiseorchidees.free.fr[/url]
Lorsque l'on navigue de page en page, defois il n'y a pas toutes les miniatures de créé
En fait je souhaite reunir deux operatiosn en une pour alleger le serveur, j'ai un premier script qu cree une miniature reduite de la photo
[php]<?
if($p == "true"){
$photo = $result['photo_fleur'];
}
else
{
$photo = $result['photo'];
}
$filename = "photos/mini_$photo";
if (!file_exists($filename)) {
$source = "/mnt/102/sdb/7/e/hegoiseorchidees/photos/$photo";
$ImageChoisie = imagecreatefromjpeg($source);
$TailleImageChoisie = getimagesize($source);
if($TailleImageChoisie[0]>$TailleImageChoisie[1])
{
//Etape 1 :
$NouvelleLargeur = 150;
//Etape 2 :
$Reduction = ( ($NouvelleLargeur * 100)/$TailleImageChoisie[0] );
//Etape 3 :
$NouvelleHauteur = ( ($TailleImageChoisie[1] * $Reduction)/100 );
}
else
{
//Etape 1 :
$NouvelleHauteur = 112;
//Etape 2 :
$Reduction = ( ($NouvelleHauteur * 100)/$TailleImageChoisie[1] );
//Etape 3 :
$NouvelleLargeur = ( ($TailleImageChoisie[0] * $Reduction)/100 );
}
//Etape 1 :
$NouvelleImage = imagecreatetruecolor($NouvelleLargeur , $NouvelleHauteur) or die ("Erreur");
//Etape 2 :
imagecopyresampled($NouvelleImage , $ImageChoisie, 0, 0, 0, 0, $NouvelleLargeur, $NouvelleHauteur, $TailleImageChoisie[0],$TailleImageChoisie[1]);
$background_color = imagecolorallocate ($NouvelleImage, 255, 255, 255);
imagefill($NouvelleImage,0,0,$background_color);
//////////////////
$miniature = "mini_$photo";
$destination = "photos/$miniature";
ImageJpeg ($NouvelleImage,$destination, 100);
}
else
{
$miniature = "mini_$photo";
}
mysql_close();
?>[/php]
et un second que j'appelle pour ajouter le fond de la miniature a chaque fois
[php]<?//------------------------------------------------------------------------------------------
// applcation d'un copyright sur une photo
//------------------------------------------------------------------------------------------
// on spécifie le type de fichier créer (ici une image de type jpeg)
header ("Content-type: image/jpeg");
include("admin/connect.php");
@MYSQL_CONNECT($serveur,$utilisateur,$mdp) or die ("Connexion impossible");
@MYSQL_SELECT_DB($db) or die ("Connexion à la base $base impossible");
$id = $_GET['id'];
$p = $_GET['p'];
if($p == 1){
$sql = mysql_query("SELECT * FROM orchidees WHERE id='$id'");
while($result=mysql_fetch_array($sql)){
$source = $result[photo];
$photo = "photos/mini_$source";
$fichier_copyright = $photo;
$im_copyright = ImageCreateFromJpeg ($fichier_copyright);
// on calcule la largeur de l'image correspondant à la vignette de copyright
$larg_copyright = imagesx ($im_copyright);
// on calcule la hauteur de l'image correspondant à la vignette de copyright
$haut_copyright = imagesy ($im_copyright);
// on crée deux variables contenant les chemins d'accès à nos deux fichiers : $fichier_source contenant le lien vers l'image à "copyrighter", $fichier_copyright contenant le lien vers la petite vignette contenant le copyright (bien sur, on prendra soin de placer les images sources dans un répertoire "caché" sinon le copyright ne sert à rien si les visiteurs ont accès aux images sources)
if($larg_copyright > $haut_copyright){
$fichier_source = "img/fd_miniature.jpg" ;
}
else {
$fichier_source = "img/fd_miniature_2.jpg" ;
}
// on crée nos deux ressources de type image (par le biais de la fonction ImageCreateFromJpeg)
$im_source = ImageCreateFromJpeg ($fichier_source);
$im_copyright = ImageCreateFromJpeg ($fichier_copyright);
// on calcule la largeur de l'image qui va être copyrightée
$larg_destination = imagesx ($im_source);
$haut_destination = imagesy ($im_source);
// on calcule la position sur l'axe des abscisses de la vignette
$x_destination_copyright = $haut_destination - $haut_copyright;
$y = $larg_destination - $larg_copyright - 11;
// on réalise la superposition, le dernier paramètre étant le degré de transparence de la vignette (cependant, allez voir la fin de ce même tutorial pour une définition complète de tous les arguments de cette fonction)
imageCopyMerge ($im_source, $im_copyright, 0, 0, 0, 0, $larg_copyright, $haut_copyright, 100);
// on affiche notre image copyrightée
Imagejpeg ($im_source);
}
}
elseif($p == 2){
$sql = mysql_query("SELECT * FROM orchidees WHERE id='$id'");
while($result=mysql_fetch_array($sql)){
$source = $result[photo_fleur];
$photo = "photos/mini_$source";
$fichier_copyright = $photo;
$im_copyright = ImageCreateFromJpeg ($fichier_copyright);
// on calcule la largeur de l'image correspondant à la vignette de copyright
$larg_copyright = imagesx ($im_copyright);
// on calcule la hauteur de l'image correspondant à la vignette de copyright
$haut_copyright = imagesy ($im_copyright);
// on crée deux variables contenant les chemins d'accès à nos deux fichiers : $fichier_source contenant le lien vers l'image à "copyrighter", $fichier_copyright contenant le lien vers la petite vignette contenant le copyright (bien sur, on prendra soin de placer les images sources dans un répertoire "caché" sinon le copyright ne sert à rien si les visiteurs ont accès aux images sources)
if($larg_copyright > $haut_copyright){
$fichier_source = "img/fd_miniature.jpg" ;
}
else {
$fichier_source = "img/fd_miniature_2.jpg" ;
}
// on crée nos deux ressources de type image (par le biais de la fonction ImageCreateFromJpeg)
$im_source = ImageCreateFromJpeg ($fichier_source);
$im_copyright = ImageCreateFromJpeg ($fichier_copyright);
// on calcule la largeur de l'image qui va être copyrightée
$larg_destination = imagesx ($im_source);
$haut_destination = imagesy ($im_source);
// on calcule la position sur l'axe des abscisses de la vignette
$x_destination_copyright = $haut_destination - $haut_copyright;
$y = $larg_destination - $larg_copyright - 11;
// on réalise la superposition, le dernier paramètre étant le degré de transparence de la vignette (cependant, allez voir la fin de ce même tutorial pour une définition complète de tous les arguments de cette fonction)
imageCopyMerge ($im_source, $im_copyright, 0, 0, 0, 0, $larg_copyright, $haut_copyright, 100);
// on affiche notre image copyrightée
Imagejpeg ($im_source);
}
}
?>[/php]
Je voudrais savoir comment zapper l'operation 1, appliquer le fond sans sauvegarder une miniature de la photo et sauvegarder plutot la miniature finale.