Creation miniature - Arrière plan noir à modifier

Mammouth du PHP | 686 Messages

10 avr. 2008, 21:14

Bonjour, je voudrai savoir comment faire l'arrière plan en blanc car ca ne marche qu'en partie
<?php 
    $source = "1.jpg";
    $ImageChoisie = imagecreatefromjpeg('1.jpg');
    $TailleImageChoisie = getimagesize('1.jpg');
    
if($TailleImageChoisie[0]>$TailleImageChoisie[1])
{
//Etape 1 :
$NouvelleLargeur = 90;
 
//Etape 2 :
$Reduction = ( ($NouvelleLargeur * 100)/$TailleImageChoisie[0] );
 
//Etape 3 :
$NouvelleHauteur = ( ($TailleImageChoisie[1] * $Reduction)/100 );
}
else
{
//Etape 1 :
$NouvelleHauteur = 90;
 
//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_$source";  
    ImageJpeg ($NouvelleImage, $miniature);   
$NouvelleImage2 = imagecreatetruecolor(90 , 90) or die ("Erreur");
$background_color = imagecolorallocate ($NouvelleImage2, 255, 255, 255);
imagefill($NouvelleImage2,0,0,$background_color);
$TailleImageChoisie2 = getimagesize("mini_$source.jpg");
$x = ( (90-$NouvelleLargeur)/2 );
$y = ( (90-$NouvelleHauteur)/2 );
imagecopyresampled($NouvelleImage2 , $NouvelleImage, $x, $y, 0, 0, 90, 90, 90,90);
      

    $miniature = "mini_$source";  
    ImageJpeg ($NouvelleImage2, $miniature);   
    echo "Image miniature générée: $miniature";  



?> 

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

13 avr. 2008, 17:29

car ca ne marche qu'en partie
C'est à dire ?
Sois précis, on devrait pas être obligé d'exécuter ton code pour déjà comprendre le problème.

Administrateur PHPfrance
Administrateur PHPfrance | 449 Messages

13 avr. 2008, 17:39

Au risque de dire une connerie mais un arriere plan pour des miniatures autant le faire en CSS avec l'attribut border ....
Cordialement
Saeveas

http://saeveas.labrute.fr

Mammouth du PHP | 686 Messages

14 avr. 2008, 15:38

ma reduction et ma miniature en carré est bien effectuée mais comme l'image n'est pas un carré a l'origine j'ai deux bandes noires de chaque coté

lux
Eléphant du PHP | 372 Messages

12 mai 2008, 20:03

J'up ce topic car je serais aussi intéressé de savoir. Chez moi ça me fait 2 bandes grises autour des thumbnails crées (si ils sont plus haut que large). C'est du à quoi ?

Mammouth du PHP | 19672 Messages

12 mai 2008, 20:31

Comme tu crées probablement ton image avec GD, l'image de base dans laquelle va se trouver ta miniature a un fond noir par défaut.

Il faut remplir ce carré de blanc avant d'y mettre ta miniature : utilise imagefilledrectangle() pour faire ça. Supposons par exemple que tu crées une image de 100px/100px :
<?php
/* Création de l'image de base */
$img = imagecreate(100, 100);
/* Allocation de couleur blanche */
$blanc = imagecolorallocate($img, 0xFF, 0XFF, 0XFF); 
/* Remplissage de l'image de base en blanc */
imagefilledrectangle($img, 0, 0, 100, 100, $blanc);
// ... etc...
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

lux
Eléphant du PHP | 372 Messages

12 mai 2008, 20:49

Ha ben non finalement c'était un autre problème qui faisait que j'avais ça. J'ai pas fait gaffe les images de base étaient redimensionné par je sais pas qui, qui a mis des bandes grises autour :twisted:

Grrrr :roll:

Et moi qui ai cherché pendant 2h pourquoi ça faisait ça :oops: