Protéger image à l'aide de php
Camille
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai créé un site avec des photos, je souhaiterais que sur ses photos un watermark apparaisse automatiquement.
Je ne peut pas le faire manuellement ma galerie comptant plusieurs centaines de photos...
Il me faudrait un script a placer par exemple dans le dossier des photos qui ferait tout le travail à ma place.
Je suppose que c'est possible, me manque juste le script.
Je suis sous free, donc les script utilisant un htaccess ne marche pas... Celui- la par exemple :
http://www.asp-php.net/scripts/asp-php/watermark-2.php
Ne marche pa sous free, c'est dommage c'est exactement ce qu'il me fallait.
Personne n'en aurait un compatible avec free ?
Merci d'avance pour votre aide.
Camille
J'ai créé un site avec des photos, je souhaiterais que sur ses photos un watermark apparaisse automatiquement.
Je ne peut pas le faire manuellement ma galerie comptant plusieurs centaines de photos...
Il me faudrait un script a placer par exemple dans le dossier des photos qui ferait tout le travail à ma place.
Je suppose que c'est possible, me manque juste le script.
Je suis sous free, donc les script utilisant un htaccess ne marche pas... Celui- la par exemple :
http://www.asp-php.net/scripts/asp-php/watermark-2.php
Ne marche pa sous free, c'est dommage c'est exactement ce qu'il me fallait.
Personne n'en aurait un compatible avec free ?
Merci d'avance pour votre aide.
Camille
A voir également:
- Protéger image à l'aide de php
- Proteger cellule excel - Guide
- Protéger un dossier par mot de passe - Guide
- Image iso - Guide
- Légender une image - Guide
- Reduire taille image - Guide
2 réponses
Tu peux contourner le problème en créant un .htaccess qui refuse l'accès au image du site (refus d'accès par lien direct au .jpg) et faire des liens vers un script qui va te faire ton watermarking à la volée, en lisant l'image que tu auras passée en argument (via un ?img=image01.jpg par exemple).
L'accès aux photos ne sera donc plus possible sans passer par le script et les utilisateurs verront le watermarking sur celles-ci....
L'accès aux photos ne sera donc plus possible sans passer par le script et les utilisateurs verront le watermarking sur celles-ci....
Désolé pour le code, je pensai aussi que tu n'étais pas aller voir le lien que j'avais posté...
En faite, c'étais moi qui n'avais pas compris ta réponse, encore désolé...
Je suis en faite novice en php.
J'ai peur que la solution que tu me propose bloque l'accés à ma gallerie qui est sous coppermine.
Tu pourrait me mettre le contenu du htaccess s'il te plait. Je risque rien à tester.
Merci.
Camille
En faite, c'étais moi qui n'avais pas compris ta réponse, encore désolé...
Je suis en faite novice en php.
J'ai peur que la solution que tu me propose bloque l'accés à ma gallerie qui est sous coppermine.
Tu pourrait me mettre le contenu du htaccess s'il te plait. Je risque rien à tester.
Merci.
Camille
Ce script par exemple ne marche pas sous free :
l'htaccess :
le fichier watermark2.php
<?php /* WATERMARK_TYPE Type de watermark Valeurs: 'text' | 'image' WATERMARK_ALIGN_H Alignment horizontal Valeurs: 'left' | 'right' | 'center' WATERMARK_ALIGN_V Alignment vertical Valeurs: 'top' | 'bottom' | 'center' WATERMARK_MARGIN Excentrage à partir du bord. Valeurs: (en pixels) */ define('WATERMARK_TYPE', 'text'); define('WATERMARK_ALIGN_H', 'center'); define('WATERMARK_ALIGN_V', 'bottom'); define('WATERMARK_MARGIN', '10'); /* WATERMARK_IMAGE_FILE Chemin vers le fichier image employé comme watermark Valeur possible (chemin absolu ou relatif). WATERMARK_OPACITY Opacité de l'image. Valeurs: entre 0 et 100 */ define('WATERMARK_IMAGE_FILE', './test.png'); define('WATERMARK_OPACITY', '60'); /* WATERMARK_TEXT Votre texte utilisé pour le copyright. WATERMARK_TEXT_FONT La police. Valeurs: de 1 à 5 WATERMARK_TEXT_SHADOW Police "black shadow". Valeurs: 'yes' | 'no' WATERMARK_TEXT_COLOR La couleur de la police Valeurs en décimal (ex: '255,255,255') ou hexadécimal (ex: '#ff4567') */ define('WATERMARK_TEXT', 'Copyright (c) 2007 www.visualprod.net'); define('WATERMARK_TEXT_FONT', '3'); define('WATERMARK_TEXT_SHADOW', 'yes'); define('WATERMARK_TEXT_COLOR', '#FFFFFF'); // FIN DE LA CONFIGURATION // Utilisateurs non averti, ne pas toucher au reste ... $original_image_file = $_SERVER['DOCUMENT_ROOT'] . $_SERVER['PATH_INFO']; $original_image_info = getimagesize($original_image_file); if ($original_image_info) { $original_image_width = $original_image_info[0]; $original_image_height = $original_image_info[1]; $original_image_imagetype = $original_image_info[2]; $original_image_mime_type = $original_image_info['mime']; } else { header("Status: 500 Internal Server Error"); if ($_SERVER['REQUEST_METHOD'] != 'HEAD') { header("Content-Type: text/plain"); echo "WaterMark: Erreur lors de la lecture des propriétés des images de la gallerie."; echo "Une ou plusieurs images sont tronquées par une signature d'entête.\n"; } exit; } if ($original_image_imagetype == IMAGETYPE_GIF) { header("Content-Type: " . $original_image_mime_type); readfile($original_image_file); exit; } elseif ($original_image_imagetype == IMAGETYPE_JPEG) { header("Content-Type: " . $original_image_mime_type); $source_image = imagecreatefromjpeg($original_image_file); } elseif ($original_image_imagetype == IMAGETYPE_PNG) { header("Content-Type: " . $original_image_mime_type); $source_image = imagecreatefrompng($original_image_file); } else { header("Status: 500 Internal Server Error"); if ($_SERVER['REQUEST_METHOD'] != 'HEAD') { header("Content-Type: text/plain"); echo "WaterMark: format d'image non supporté\n"; } exit; } if (WATERMARK_TYPE == 'image' && WATERMARK_IMAGE_FILE != '' && file_exists(WATERMARK_IMAGE_FILE)) { $watermark_image_file = realpath(WATERMARK_IMAGE_FILE); $watermark_image_info = getimagesize($watermark_image_file); if ($original_image_info) { $watermark_image_width = $watermark_image_info[0]; $watermark_image_height = $watermark_image_info[1]; $watermark_image_imagetype = $watermark_image_info[2]; $watermark_image_mime_type = $watermark_image_info['mime']; } else { header("Status: 500 Internal Server Error"); if ($_SERVER['REQUEST_METHOD'] != 'HEAD') { header("Content-Type: text/plain"); echo "WaterMark: Erreur lors de a lecture des propriétés de l'image à incruster."; echo "L'image est tronquée par une signature d'entête.\n"; } exit; } if ($watermark_image_imagetype == IMAGETYPE_JPEG) { $watermark_image = imagecreatefromjpeg(WATERMARK_IMAGE_FILE); } elseif ($watermark_image_imagetype == IMAGETYPE_PNG) { $watermark_image = imagecreatefrompng(WATERMARK_IMAGE_FILE); } if ($watermark_image) { $watermark_y = WATERMARK_MARGIN; if (WATERMARK_ALIGN_V == 'top') { $watermark_y = WATERMARK_MARGIN; } elseif (WATERMARK_ALIGN_V == 'bottom') { $watermark_y = $original_image_height - $watermark_image_height - WATERMARK_MARGIN; } elseif (WATERMARK_ALIGN_V == 'center') { $watermark_y = (int)($original_image_height / 2 - $watermark_image_height / 2); } $watermark_x = WATERMARK_MARGIN; if (WATERMARK_ALIGN_H == 'left') { $watermark_x = WATERMARK_MARGIN; } elseif (WATERMARK_ALIGN_H == 'right') { $watermark_x = $original_image_width - $watermark_image_width - WATERMARK_MARGIN; } elseif (WATERMARK_ALIGN_H == 'center') { $watermark_x = (int)($original_image_width / 2 - $watermark_image_width / 2); } imagecopymerge( $source_image, $watermark_image, $watermark_x, $watermark_y, 0, 0, $watermark_image_width, $watermark_image_height, WATERMARK_OPACITY ); } } elseif (WATERMARK_TYPE == 'text' && WATERMARK_TEXT != '') { $color = WATERMARK_TEXT_COLOR; $red = hexdec(substr($color, 1, 2)); $green = hexdec(substr($color, 3, 2)); $blue = hexdec(substr($color, 5, 2)); $text_color = imagecolorallocate($source_image, $red, $green, $blue); $shadow_color = imagecolorallocate($source_image, 0, 0, 0); $text_height = imagefontheight(WATERMARK_TEXT_FONT); $text_width = strlen(WATERMARK_TEXT) * imagefontwidth(WATERMARK_TEXT_FONT); $watermark_y = WATERMARK_MARGIN; if (WATERMARK_ALIGN_V == 'top') { $watermark_y = WATERMARK_MARGIN; } elseif (WATERMARK_ALIGN_V == 'bottom') { $watermark_y = $original_image_height - $text_height - WATERMARK_MARGIN; } elseif (WATERMARK_ALIGN_V == 'center') { $watermark_y = (int)($original_image_height / 2 - $text_height / 2); } $watermark_x = WATERMARK_MARGIN; if (WATERMARK_ALIGN_H == 'left') { $watermark_x = WATERMARK_MARGIN; } elseif (WATERMARK_ALIGN_H == 'right') { $watermark_x = $original_image_width - $text_width - WATERMARK_MARGIN; } elseif (WATERMARK_ALIGN_H == 'center') { $watermark_x = (int)($original_image_width / 2 - $text_width / 2); } if (WATERMARK_TEXT_SHADOW == 'yes') { imagestring( $source_image, WATERMARK_TEXT_FONT, $watermark_x + 1, $watermark_y + 1, WATERMARK_TEXT, $shadow_color ); } imagestring( $source_image, WATERMARK_TEXT_FONT, $watermark_x, $watermark_y, WATERMARK_TEXT, $text_color ); } else { header("Status: 500 Internal Server Error"); if ($_SERVER['REQUEST_METHOD'] != 'HEAD') { header("Content-Type: text/plain"); echo "WaterMark: Erreur de configuration\n"; } exit; } if ($original_image_imagetype == IMAGETYPE_JPEG) { imagejpeg($source_image); } elseif ($original_image_format == IMAGETYPE_PNG) { imagepng($source_image); } ?>J'obtiens une erreur 500 avec.
Note : inutile de poster un code quand il est disponible via un lien...