[php4] ajouter un copyright dans une image - class addcopyright

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 832 fois - Téléchargée 30 fois

Contenu du snippet

Cette class parcourt vos dossiers et indexe les fichiers image avant d'y insérer un copyright avec votre nom ou encore l'adresse de votre site Web. Ce copyright est invisible en apparence. En effet il n'altère pas la qualité de vos images et s'inscrit directement à la fin du fichier, dans la partie non-interprétée de l'image. Il reste toutefois facile à dénicher, il vous suffira d'ouvrir votre image avec un éditeur de texte.

Ce code fut conçu pour un ami qui à eu un énorme problème de "pillage" de tutoriaux (tutoriaux à base de screen shots) mais n'a pas pû prouver la possession de ceux-ci.

En espérant que ce code vous sera utile.

Source / Exemple :


<?php

// Pas de limite de temps à l'execution
set_time_limit( 0 );

// Reporte toutes les erreurs
error_reporting( E_ALL );

// class AddCopyright
class AddCopyright
{
	// Format du copyright
	var $copyright = '© Copyright %s. Tous droits réservés.';
	
	// Initialisation du tableau contenant les fichiers
	var $files = array();
	
	// Filtres
	var $ignore = array( '.', '..' );

	// Constructeur
	function AddCopyright( $owner, $path = '.' )
	{
		// Formatte le copyright
		$this->copyright = sprintf( $this->copyright, $owner );
		// Recherche les fichiers image
		$this->CheckFiles( $path ); 
		
		// Pour chaque fichier ...
		foreach ( $this->files as $file )
		{
			// ... insère le copyright
			$this->WriteCopy( $file );
		}
		
		// Affiche un message de fin
		echo 'Copyright inséré !';
	}
	
	// Recherche les fichiers image
	function CheckFiles( $path )
	{
		// Ouvre le répertoire courant ...
		$dp = opendir( $path );
		// ... et le lit
		while ( ( $file = readdir( $dp ) ) !== false )
		{
			// Filtre les répertoires/fichiers contenu dans
			// le tableau $ignore
			if ( !in_array( $file, $this->ignore ) )
			{
				// Si le fichiers lu est un dossier, ...
				if ( is_dir( $path . '/' . $file ) )
				{
					// on l'ouvre en appelant de nouveau la
					// fonction Checkfiles()
					$this->CheckFiles( $path . '/' . $file );
				}
				// Sinon
				elseif
				(
					is_file( $path . '/' . $file )
						&&
					// Si le fichier est bien une image
					(
					substr( $file, strlen( $file ) - 3, 3 ) == 'png'
						||
					substr( $file, strlen( $file ) - 3, 3 ) == 'gif'
						||
					//!\\ Attention, je n'ai pas testé sur
					//!\\ le format JPEG !
					substr( $file, strlen( $file ) - 3, 3 ) == 'jpg'
					)
				)
				{
					// Onm l'indexe dans le tableau $files
					$this->files[] = $path . '/' . $file;
				}
			}
		}

		// On ferme le répertoire
		closedir( $dp );
	}
	
	// Insère le copyright dans une image
	function WriteCopy( $file )
	{
		// Ouvre le fichier image en mode "ajouter"
		$fp = fopen( $file, 'a' );
		// Insère le copyright
		fwrite( $fp, $this->copyright );
		// Ferme le fichier
		fclose( $fp );
	}
}

// Utilisation de la classe relativement simple, il vous
// suffit simplement de placer le script à la racine de
// site/dossier et de l'exécuter. Le 2ème paramètre est
// obtionnel.
// Notez qu'il suffit que d'une seule ligne.
//
// Prennez soin de faire des copies de vos images avant
// d'y insérer le copyright sinon en cas de réutilisation
// du script, il serait ajouté une 2ème fois !
$copy = new AddCopyright( 'Votre nom ou l\'adresse de votre site web', '.' );

?>

Conclusion :


Je n'ai actuellement ressencé aucun bug.
Je ai seulement testé ce script sur les formats PNG et GIF mais que pense que cela doit aussi fonctionner pour le JPEG. Pour ce qui est du BMP, TIFF, TGA, mais espoirs sont moindres ...

A voir également

Ajouter un commentaire Commentaires
cs_c v Messages postés 30 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 10 septembre 2012
13 mars 2007 à 12:36
Les moins : copyright non standard, donc les logiciels ne les gardes pas, si après insertion du copyright vous re-enregistrez l'image (même sans la modifier avec la même extension) ce copyright disparait, de même si vous utilisez l'image avec la librairie GD .... il serait bien d'additionner ce script à une insertion format ipct et eexif.
cs_c v Messages postés 30 Date d'inscription vendredi 26 mars 2004 Statut Membre Dernière intervention 10 septembre 2012
13 mars 2007 à 12:00
Très fort, le copyright n'est pas standard donc il ne peut être enlevé que manuellement.

Au lieu de mettre ça :
//!\\ Attention, je n'ai pas testé sur
//!\\ le format JPEG !

Tu peux mettre ça :
|| substr( $file, strlen( $file ) - 4, 4 ) == 'jpeg'

Moi aussi je déteste les extensions en majuscule, mais beaucoup d'appareil photo adore ça :
pour les extensions jpg,JPG,gif,GIF,png,PNG,jpeg,JPEG :

strtolower( substr( $file, strlen( $file ) - 3, 3 ) ) == 'png'
||
strtolower( substr( $file, strlen( $file ) - 3, 3 ) ) == 'gif'
||
strtolower( substr( $file, strlen( $file ) - 3, 3 ) ) == 'jpg'
||
strtolower( substr( $file, strlen( $file ) - 4, 4 ) ) == 'jpeg'

(ça marche aussi sur les gif animés)

10/10 + Merci.
cs_philty Messages postés 1 Date d'inscription vendredi 31 octobre 2003 Statut Membre Dernière intervention 15 juin 2005
15 juin 2005 à 12:53
Salut, bravo et merci !
Je me demandais comment j'allais faire pour mettre un copyright sur mes photos, j'ai trouvé :)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
11 juin 2005 à 09:06
Salut,

mets un arobase à ta fonction set_time_limit() car elle est souvent désactivée par les hébergeurs mutualisés.

@set_time_limit(0);

Ensuite c'est un bon code simple et assez bien codé.

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.