Fusion d'images + texte : style copyright, protégez vos images

Soyez le premier à donner votre avis sur cette source.

Vue 15 463 fois - Téléchargée 966 fois

Description

Permet de protéger ses images en y ajoutant une image (de votre choix) à une autre existante (ou créée par votre code) afin de la protéger.
il s'agit ds'un copyright à la manière de photostogo.com

En fait, je cherchais depuis plusieurs jours un code similaire pour l'ouverture d'un site en php et je l'ai pas trouvé lors j'ai bricolé ce code et je le mets à dispo.

Soyez indulgent, j'utilise php (sur krosoft) depuis quelques jours. Mon language de prédilection était plutot l'ASP (entre parenthèse, je trouve le PHP carrement mieux).

la bibliothèque GD doit être installer.

Source / Exemple :


<?php
/* Ce script permet d'ajouter du texte et une image à une autre image */
/* bibliothèque GD de rigueur */
/* A optimiser ?! Peut être ?! */

$texte="(c) 2003 Nom du site ou de l'artiste";	// texte inséré dans l'image.
$nomfichier="image_sortie.jpg";   // nom de l'image de sortie.
$qualite=100; 					// 0 à 100.
$fontpath="c:\windows\fonts\\";	// chemin de la police.
$nompolice="verdana.ttf";		// nom de la police.

//$gif = ImageCreate(150,110);  // pour ceux qui veulent créer l'image, dans ce cas là enlever le commentaire de cette ligne et mettre en commentaire les 4 lignes de code suivantes.

//on va chercher l'image principale  de test
$Image = "test_image.jpg"; //son nom.
$Source = "c:/inetpub/nom_du_site/"; //l'emplacement de votre image.
$jpg=imagecreatefromjpeg($Source.$Image); 
$size = getimagesize($Source.$Image); // $size[0] = largeur, $size[1] = hauteur.

//on va chercher l'image à fusionner
$Image2 = "demo.gif";
$Source2 = "c:/inetpub/nom_du_site/";
$gif=imagecreatefromgif($Source2.$Image2);

imagecopymerge ($jpg,$gif,0,0,0,0,152,118,20); //int  imagecopymerge ( resource   dst_im , resource   src_im , int   dst_x , int   dst_y , int   src_x , int   src_y , int   src_w , int   src_h , int   pct ) 
$bg = ImageColorAllocate($jpg,128,128,128);
$tx = ImageColorAllocate($jpg,255,255,255); //l'image et les couleurs RVB.
//ImageFilledRectangle($jpg,0,0,$size[0],$size[1],$bg); //au cas où vous voulez remplir l'image d'une couleur unie.
 
ImageTTFText ($jpg, 6, 0, 3, $size[1]-5, $tx, $fontpath.$nompolice ,$texte); //array  imagettftext ( resource   image , int   size , int   angle , int   x , int   y , int   color , string   fontfile , string   text )
header("content-type: image/jpeg"); //si cette ligne vous pose pb mlettez là en commentaire
ImageJPEG($jpg,$nomfichier,$qualite); //fichier de sortie
?>
<head>
<style type="text/css">
<!--
.style2 {
	font-size: 80px;
	font-weight: bold;
}
.style3 {font-size: 14px}
.style4 {font-family: Arial, Helvetica, sans-serif}
.style5 {font-size: 14px; font-family: Arial, Helvetica, sans-serif; }
-->
</style>
</head>
<body>
<table width="100" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="3"><div align="center" class="style4">Résultat du code : <br>
      <br>
    </div></td>
  </tr>
  <tr>
    <td><img src="test_image.jpg" width="150" height="110"></td>
    <td>&nbsp;<span class="style2">=></span>&nbsp;</td>
    <td><img src="image_sortie.jpg" width="150" height="110"></td>
  </tr>
  <tr>
    <td><div align="center" class="style4 style3"><strong>AVANT</strong></div></td>
    <td><div align="center" class="style5"><em>PHP</em></div></td>
    <td><div align="center" class="style5"><strong>APRES</strong></div></td>
  </tr>
</table> 
</body>

Conclusion :


code testé avec succès (cf.capture)

à sortir une version beaucoup plus élaborée pour un portail type phpnuke (gestionnaire de photo et album dynamique).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

matrey
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
-
tu peux utiliser les polices "système" de GD pke là tu utilise des TTF, dont çà veut idre que FreeType doit être installé, ce qui est pas souvent le cas...
webdesignasp
Messages postés
29
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
19 avril 2005
-
Exact.

Dans ce cas là, remplacer la ligne

imagettftext ($jpg, 6, 0, 3, $size[1]-5, $tx, fontpath.$nompolice ,$texte);

par :

imagestring($jpg, "arial", 3, $size[1]-5, "le texte", $tx);

pour la taille de police : il faut pas trop m'en demander. j'imagine qu'il faut utiliser imagefontheight et imagefontwidth.

Ceux qui peuvent profiter de FreeType , apprécieront la possibilité de changer de police (et donc l'utilisation de polices symboles). Il me semble qu'à partir du moment où GD2 est installé, pour FreeType c'est ok. (OVH, multimania,... doivent avoir ça installé).
cs_koko
Messages postés
654
Date d'inscription
lundi 14 janvier 2002
Statut
Membre
Dernière intervention
20 février 2005
-
il faudrait aussi modifié un petit truc :)
car j'ai cette erreur :
Fatal error: Call to undefined function: imagecreatefromgif() in image.php on line 23

et sur php.net j'ai ceci :
"Note : Etant donné que toutes les fonctions de gestion des GIF ont été supprimées de la bibliothèque GD version 1.6, cette fonction n'est pas disponible si vous utilisez cette version de la librairie. "

donc tu serais modifié ton script pour que cela marche avec une version autre que gif ?
matrey
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
-
perso je sais que FreeType est pas inclu dans EasyPHP et niveau hébergeurs, çà passe pas chez Free, pour les autres j'ai des doutes mais il faudrait vérifier
webdesignasp
Messages postés
29
Date d'inscription
jeudi 10 avril 2003
Statut
Membre
Dernière intervention
19 avril 2005
-
rapidement pour koko :
- la réponse est dans le code,
il faut rempalcer ça

//on va chercher l'image à fusionner
$Image2 = "demo.gif";
$Source2 = "c:/inetpub/nom_du_site/";
$gif=imagecreatefromgif($Source2.$Image2);

par

//on va chercher l'image à fusionner
$Image2 = "demo.jpg";
$Source2 = "c:/inetpub/nom_du_site/";
$gif=imagecreatefromjpeg($Source2.$Image2);

pour la transparence, prévoir d'utiliser :
$background = imagecolorallocate ($gif, 255, 255, 255);
$background = imagecolortransparent($gif,$background);

enfin, je suis pas un expert en PHP mais il faudrait demander à d'autre qui devraient savoir ça.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.