begin process at 2012 05 27 16:39:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > AJOUT DE BANDES NOIRES SUR UNE IMAGE

AJOUT DE BANDES NOIRES SUR UNE IMAGE


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Classé sous :bande, noires, images, miniature Niveau :Débutant Date de création :26/04/2006 Date de mise à jour :26/04/2006 10:56:24 Vu :3 203

Auteur : killua73

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

alors voila j'avais des problèmes de mises en page avec de images alors je me suis dit que ca pourrait servir.
On récupère une image envoyée auparavant par un formulaire, on créé une miniature avec des bandes noires soit horizontales, soit verticales pour que l'image miniatures ait toujours la même taille et enfin on enregistre la miniature et l'image normale.
Ca permet faciliter la mise en page pour des banques d'images par exemple, on affiche les miniatures avec un lien vers l'image normale.

Source

  • <?php
  • if (isset($_FILES['monFichier']['tmp_name']))
  • {
  • // récuperation des informations du fichier envoyé par le formulaire
  • $fichierTemp=$_FILES['monFichier']['tmp_name'];
  • $nom = $_FILES['monFichier']['name'];
  • $fichierSize = $_FILES['monFichier']['size'];
  • $fichierType = $_FILES['monFichier']['type'];
  • $fichierErreur = $_FILES['monFichier']['error'];
  • $nom=strtolower($nom);
  • if (substr($nom,-4)=='jpeg') // transforme les estensions jpeg en jpg
  • $nom=substr($nom,0,strlen($nom)-4).'jpg';
  • if (strlen($nom)>20) // réduit les noms de fichiers superieurs a 20 caractères pour la base de données
  • $nom=substr($nom,0,15).".jpg";
  • if (substr($nom,-3)!='jpg')
  • $fichierErreur=1;
  • if (!$fichierErreur)
  • {
  • if (is_uploaded_file($fichierTemp) && !file_exists($nom))
  • {
  • if(!move_uploaded_file($fichierTemp, $nom))
  • echo ('impossible d\'enregister<br>');
  • else
  • {
  • //on créé un miniature de l'image
  • $taille=getimagesize($nom);
  • $source_image = imagecreatefromjpeg($nom);
  • $pos_x=0;
  • $pos_y=0;
  • if ($taille[0]>$taille[1])
  • {
  • $x = 225;
  • $y = (int)($x*$taille[1]/$taille[0]);
  • $pos_y = (int)((100-$y)/2);
  • }
  • else
  • {
  • $y = 150;
  • $x = (int)($y*$taille[0]/$taille[1]);
  • $pos_x = (int)((150-$x)/2);
  • }
  • $dest_image = imagecreatetruecolor(150,100);
  • $noir=imagecolorallocate($dest_image, 0, 0, 0);
  • imagecopyresampled($dest_image,$source_image, $pos_x,$pos_y,0,0,$x,$y,$taille[0] ,$taille[1]);
  • imagejpeg($dest_image,vignette/$nom");
  • imagedestroy( $source_image);
  • imagedestroy( $dest_image);
  • echo ('enregistrement OK <br>');
  • }
  • }
  • else
  • echo ("le fichier spécifié n'est pas un fichier chargé ou existe déjà.<br>");
  • }
  • else
  • echo ('désolé il y a eu une erreur <br>');
  • }
  • ?>
<?php
if (isset($_FILES['monFichier']['tmp_name']))
{
// récuperation des informations du fichier envoyé par le formulaire
$fichierTemp=$_FILES['monFichier']['tmp_name'];
$nom = $_FILES['monFichier']['name'];
$fichierSize = $_FILES['monFichier']['size'];
$fichierType = $_FILES['monFichier']['type'];
$fichierErreur = $_FILES['monFichier']['error'];
$nom=strtolower($nom);

if (substr($nom,-4)=='jpeg') // transforme les estensions jpeg en jpg
  $nom=substr($nom,0,strlen($nom)-4).'jpg';
if (strlen($nom)>20)  // réduit les noms de fichiers superieurs a 20 caractères pour la base de données
  $nom=substr($nom,0,15).".jpg";
  
if (substr($nom,-3)!='jpg')
  $fichierErreur=1;

if (!$fichierErreur)
  {
    if (is_uploaded_file($fichierTemp) && !file_exists($nom))
    {
      if(!move_uploaded_file($fichierTemp, $nom))
        echo ('impossible d\'enregister<br>');
      else
        {
		
  		//on créé un miniature de l'image
		$taille=getimagesize($nom);
  		$source_image = imagecreatefromjpeg($nom);
		$pos_x=0;
		$pos_y=0;
  		if ($taille[0]>$taille[1])
		  {
		  $x = 225;
  		  $y = (int)($x*$taille[1]/$taille[0]);
		  $pos_y = (int)((100-$y)/2);
		  }
		else		
		  {
		  $y = 150;
  		  $x = (int)($y*$taille[0]/$taille[1]);
		  $pos_x = (int)((150-$x)/2);
		  }
		$dest_image = imagecreatetruecolor(150,100);
		$noir=imagecolorallocate($dest_image, 0, 0, 0);
  		imagecopyresampled($dest_image,$source_image, $pos_x,$pos_y,0,0,$x,$y,$taille[0] ,$taille[1]);
  		imagejpeg($dest_image,vignette/$nom");
  		imagedestroy( $source_image);
  		imagedestroy( $dest_image);
                echo ('enregistrement OK <br>');
		}
    }
    else
      echo ("le fichier spécifié n'est pas un fichier chargé ou existe déjà.<br>");
  }
else
  echo ('désolé il y a eu une erreur <br>');
}
?>

 Conclusion

il est nécessaire d'avoir l'extensions gd2 activée pour la création des miniatures.
Sur EasyPHP, faites un clic droit sur l'icone, allez dans configuration, extensions PHP et cochez la case gd2, redémarrez EasyPHP et c'est bon!


 Historique

26 avril 2006 10:56:24 :
faute dans le titre, je le ferai plus promis tapez pas s'il vous plaît.

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

 Sources en rapport avec celle ci

SYSTÈME DE PAGINATION AVEC BDD ET IMAGES (FICHIERS) par begueradj
UPLOAD IMAGE AVEC MINIATURE par dilar
Source avec Zip FAIRE DES MINIATURE D'IMAGE, DES PHOTOS POUR LES PROFILS par zulrigh
Source avec Zip CRÉATION D'UNE MINIATURE AVEC UNE LARGEUR OU UNE HAUTEUR MAX... par medium69
Source avec Zip GALERIE AUTOMATIQUE SANS BASE DE DONNEES par hisoka2501

Commentaires et avis

Commentaire de Evangun le 26/04/2006 15:42:53

Salut!
L'idée est bonne, je voulais faire ça à un moment.
Quelques remarques:
tu as oublié un " à la ligne 49.
Tu devrais mieux indenter ton code.
Tu devrais en faire une fonction, ce serait beaucoup mieux. En sachant qu'une bonne fonction renvoie true en cas de succès et false en cas d'échec.
Ce serait bien que ton code s'occupe d'un fichier qui existe sur le serveur plutôt que de le récupérer d'un formulaire, ce serait plus facile pour tt le monde à adapter sur son site.
Tu devrais enlever la partie qui change le nom ou l'extension du fichier, ça c'est à chacun de voir pour lui.
Pareil pour le répertoire de destination, tu devrais le mettre en paramètre de ta fonction. De même que les tailles voulues en largeur et hauteur.
On n'écrit pas imagejpeg("$dest_image, vignette/$nomf"); mais plutôt imagejpeg($dest_image, 'vignette/'.$nomf); et echo 'enregistrement OK <br>'; plutôt que echo ('enregistrement OK <br>');
Dans ta logique, tu vérifies si le fichier que tu as copié à la racine n'existe pas avant de le copier... c'est plutôt dans le répertoire de destination que tu devrais vérifier, et utiliser un nom temporaire le temps que tu stockes l'image à la racine, histoire d'être à peu près sûr que tu n'écrases rien. Mais je ne suis même pas sûr que tu sois obligé de copier le fichier avant de travailler dessus :il faudrait voir si imagecreate peut prendre un $_FILES comme paramètre.
sinon fais attention à la gestion d'erreur: ça peut afficher enregistrement ok alors qu'il y a eu échec.
C'est à peu près tt ce que j'avais à dire je crois, je noterai qd tu auras modifié ton script
à+

Commentaire de killua73 le 02/05/2006 10:25:59

merci beuacoup pour tout ces bon conseils, je m'y met tout de suite

Commentaire de Evangun le 16/02/2007 18:11:45

Salut, j'ai ajouté qqs trucs à ta fonction pour gérer plusieurs extensions à l'entrée, et aussi la façon de gérer la taille des images n'était pas bonne, elle faisait des bugs avec certains ratios largeur/hauteur. Merci



if (!empty($_FILES['image']['name'])){

$largeursouhaitee = 140;
$hauteursouhaitee = 186;
$destination = './repertoire/image.jpg';

$fichierTemp=$_FILES['image']['tmp_name'];
$fichierSize = $_FILES['image']['size'];
$fichierType = $_FILES['image']['type'];
$fichierErreur = $_FILES['image']['error'];

if (!$fichierErreur){
if(is_uploaded_file($fichierTemp)){
if(!move_uploaded_file($fichierTemp, 'deleteme.temp')){
echo '<script>alert("Impossible d\'envoyer l\'image, veuillez réessayez.");</script>';
}
else {
$nom = 'deleteme.temp';
$taille = getimagesize($nom);

switch($taille[2]){
case 1: $source_image = imagecreatefromgif($nom); break;
case 2: $source_image = imagecreatefromjpeg($nom); break;
case 3: $source_image = imagecreatefrompng($nom); break;
default: $source_image = false; break;
}

if($source_image){
if($taille[0]/$taille[1] >= 140/186){
$x = 140;
$y = (int)($x*$taille[1]/$taille[0]);
$pos_y = (int)((186-$y)/2);
}
else {
$y = 186;
$x = (int)($y*$taille[0]/$taille[1]);
$pos_x = (int)((140-$x)/2);
}

$dest_image = imagecreatetruecolor(140,186);
$noir=imagecolorallocate($dest_image, 0, 0, 0);
if(imagecopyresampled($dest_image,$source_image, 0,0,0,0,$x,$y,$taille[0] ,$taille[1])) {

echo '<script>alert("Modification de l\'image enregistrée.");</script>';

imagejpeg($dest_image, $destination);
}
else { echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';}


imagedestroy( $source_image);
imagedestroy( $dest_image);
unlink('deleteme.temp');
}
}
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}

Commentaire de Evangun le 16/02/2007 18:14:18

Mince, mon indentation est partie... tant pis.

Commentaire de Evangun le 16/02/2007 18:16:34

Mince encore, j'ai oublié de remplacer les 140 et les 186 par $largeursouhaitee et $hauteursouhaitee dans le script :p
et désolé de flooder ^^

Commentaire de Evangun le 16/02/2007 18:49:34

Hello, si un admin peut supprimer mes trois messages précédents...
Donc je disais que j'ai ajouté qqs trucs à ta fonction pour gérer plusieurs extensions à l'entrée, et aussi la façon de gérer la taille des images n'était pas bonne, elle faisait des bugs avec certains ratios largeur/hauteur. Merci

if (!empty($_FILES['image']['name'])){

$largeursouhaitee = 140;
$hauteursouhaitee = 186;
$destination = './images/image.jpg';


$fichierTemp=$_FILES['image']['tmp_name'];
$fichierSize = $_FILES['image']['size'];
$fichierType = $_FILES['image']['type'];
$fichierErreur = $_FILES['image']['error'];

if (!$fichierErreur){
if(is_uploaded_file($fichierTemp)){
if(!move_uploaded_file($fichierTemp, 'deleteme.temp')){
echo '<script>alert("Impossible d\'envoyer l\'image, veuillez réessayez.");</script>';
}
else {
$nom = 'deleteme.temp';
$taille=getimagesize($nom);

switch($taille[2]){
case 1: $source_image = imagecreatefromgif($nom); break;
case 2: $source_image = imagecreatefromjpeg($nom); break;
case 3: $source_image = imagecreatefrompng($nom); break;
default: $source_image = false; break;
}

if($source_image){

if($taille[0]/$taille[1] >= $largeursouhaitee/$hauteursouhaitee){
$y = (int)($largeursouhaitee*$taille[1]/$taille[0]);
$x = $largeursouhaitee;

$pos_y = (int)(($hauteursouhaitee-$y)/2);
$pos_x = 0;
}
else {
$x = (int)($hauteursouhaitee*$taille[0]/$taille[1]);
$y = $hauteursouhaitee;

$pos_x = (int)(($largeursouhaitee-$x)/2);
$pos_y = 0;
}

$dest_image = imagecreatetruecolor($largeursouhaitee, $hauteursouhaitee);
$noir = imagecolorallocate($dest_image, 255, 255, 255);
if(imagecopyresampled($dest_image,$source_image, $pos_x,$pos_y,0,0,$x,$y,$taille[0] ,$taille[1])) {

echo '<script>alert("Modification de l\'image enregistrée. Ne faites pas attention si l\'ancienne apparaît encore sur cette page.");</script>';

imagejpeg($dest_image, $destination);
}
else { echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';}


imagedestroy( $source_image);
imagedestroy( $dest_image);
unlink('deleteme.temp');
}
}
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}
else echo '<script>alert("Il y a eu une erreur. Réessayez avec une autre image.");</script>';
}

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

affichage de plusieurs images sur un meme emplacement [ par yodasky ] Bonjour je vais faire simple, je voudrai faire ça: http://www.papvacances.fr/location-st-gervais-bains-0419618.htm c'est a dire plusieurs photos minia affichage d'image en miniature en php [ par ffrany ] Bonjour,j'ai crée un site web en php. Et j'ai pas mal d'images à afficher. Mais j'aimerais afficher ces images en php en bande roulantes (ces images d Mail en html, décalage cellule [ par franckoff ] Bonjour à tous... Débutant et autodidacte sur le HTML et le PHP, je dois faire un mail en HTML. Je créé ma page web sans souci, je la pose sur l'hébe Affichage de resultat sans rapport avec mots-clés [ par ewertheimer ] Bonjour, Je me suis servi d'un tutorial pour essayer de crér un moteur de recherche pour mon site. Cependant, j'ai un petit probleme c'est que les res probleme de galerie [ par emieno ] bonjour j'ai un gros ou plutot  un petit probleme avec ma galerie  ( la voici =&gt; ma ga<img src="/im Site PHP SQL sur Free probleme images [ par regisgb17 ] Bonjour, J'ai fait un site en php et mysql: http://alpesfaune.free.frIl fonctionne bien so tableau du menu [ par sandryneR ] Bonjour,Je voudrais déplacer les liens de http://www.dicofusion.org  "dicofusion; faq; 50 au hasard; statistiques; connexion; mots du jour; de la veil gd et la superposition d'images transparentes [ par bizu29 ] Tout d'abord bonjour/soirAlors j'ai un petit soucis qui commence a me rendre dingue Mon but est de fusionner ces 2 images avec gd <img src="http://biz


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales