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

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

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.