Téléchargement - programmation d'experts
ClR555
-
ClR555 -
ClR555 -
Bonsoir bonsoir...
Une question me taraude...
-> Est-il envisageable de forcer le téléchargement d'une image avec une watermark, créée au préalable en PHP ?
Si oui , dans quel langage et comment ?
Je vous explique brièvement l'idée : La watermark est créée grace à un fichier .htaccess qui implémente un script de watermark lorsqu'une image d'un dossier, définit en amont, est appelée à être affichée dans un navigateur web.
La watermark n'est pas copiée sur les images originales, elle se montre juste à l'affichage...
Donc cette partie est fonctionnelle.
Voilou. ce que je voudrais, c'est qu'au clic(droit) sur une image (ou sur un fichier...ou sur un lien quel qu'il soit, dans l'idéal) une fenêtre s'ouvre proposant le téléchargement ou l'enregistrement.
Jusque là non plus pas tant de pb. Ce qui m'ennuie c'est qu'en téléchargeant, la watermark ne s'affiche plus puisqu'il n'existe plus d'interface pour l'afficher.
je me disais que peut-être je pouvais réussir à enregistrer l'image au moment du téléchargement (?)...? quitte à voir l'image une seconde à l'écran avant téléchargement, en l'affichant de force et en téléchargeant du coup l'image affichée, et non plus l'image du serveur (ce qu'on peut actuellement faire avec un clic gauche sur l'image affichée).
Mais alors pour ce qui est de mettre en oeuvre, je ne sais absolument pas comment faire.
J'aimerais savoir vous pensez que c'est une mission impossible perdue d'avance pour moi ou si vous croyez qu'il y a peut-être un chemin de traverse à emprunter pour intégrer au final cette watermark dans l'image téléchargée...
je ne trouve pas une once de solution sur le net... mais faut avouer que mes termes de recherche incertains ne m'aident pas non plus je pense.
Tous les conseils sont donc les bienvenus.
Merci d'avance, et très bonne soirée ! : )
Une question me taraude...
-> Est-il envisageable de forcer le téléchargement d'une image avec une watermark, créée au préalable en PHP ?
Si oui , dans quel langage et comment ?
Je vous explique brièvement l'idée : La watermark est créée grace à un fichier .htaccess qui implémente un script de watermark lorsqu'une image d'un dossier, définit en amont, est appelée à être affichée dans un navigateur web.
La watermark n'est pas copiée sur les images originales, elle se montre juste à l'affichage...
Donc cette partie est fonctionnelle.
Voilou. ce que je voudrais, c'est qu'au clic(droit) sur une image (ou sur un fichier...ou sur un lien quel qu'il soit, dans l'idéal) une fenêtre s'ouvre proposant le téléchargement ou l'enregistrement.
Jusque là non plus pas tant de pb. Ce qui m'ennuie c'est qu'en téléchargeant, la watermark ne s'affiche plus puisqu'il n'existe plus d'interface pour l'afficher.
je me disais que peut-être je pouvais réussir à enregistrer l'image au moment du téléchargement (?)...? quitte à voir l'image une seconde à l'écran avant téléchargement, en l'affichant de force et en téléchargeant du coup l'image affichée, et non plus l'image du serveur (ce qu'on peut actuellement faire avec un clic gauche sur l'image affichée).
Mais alors pour ce qui est de mettre en oeuvre, je ne sais absolument pas comment faire.
J'aimerais savoir vous pensez que c'est une mission impossible perdue d'avance pour moi ou si vous croyez qu'il y a peut-être un chemin de traverse à emprunter pour intégrer au final cette watermark dans l'image téléchargée...
je ne trouve pas une once de solution sur le net... mais faut avouer que mes termes de recherche incertains ne m'aident pas non plus je pense.
Tous les conseils sont donc les bienvenus.
Merci d'avance, et très bonne soirée ! : )
A voir également:
- Téléchargement - programmation d'experts
- Telechargement direct - Accueil - Outils
- Dark world telechargement - Guide
- Téléchargement - Télécharger - Compression & Décompression
- Telechargement - Télécharger - Traitement de texte
- Adobe Reader - Télécharger - PDF
7 réponses
Salut,
Et tu utilises la réécriture d'URL pour passer par le fichier PHP ?
Donc /images/example.png est en réalité /copy.php?file=example.png ?
(par exemple)
Dans ce cas, si l'image est affichée via /images/example.png, il n'y a pas de raison pour qu'en enregistrant, ça ne passe pas via le fichier PHP.
Il faudrait plus de détails pour trouver d'où vient le problème, avec ça, on ne peut rien faire.
Et tu utilises la réécriture d'URL pour passer par le fichier PHP ?
Donc /images/example.png est en réalité /copy.php?file=example.png ?
(par exemple)
Dans ce cas, si l'image est affichée via /images/example.png, il n'y a pas de raison pour qu'en enregistrant, ça ne passe pas via le fichier PHP.
Il faudrait plus de détails pour trouver d'où vient le problème, avec ça, on ne peut rien faire.
La réécriture d'URL permet de créer des 'alias'.
On utilise les expressions régulières (regex), et on peut utiliser les parenthèses capturantes pour créer des 'variables'. Et ces variables, on peut les utiliser pour indiquer la cible de l'alias.
Ainsi, si tu veux faire pointer
/images/example.png vers /watermark.php?filename=example.png,
On écrira ceci :
Mais en combinant AddHandler et Action, ça revient au même, sauf que on utilise $_SERVER['PATH_INFO']
On utilise les expressions régulières (regex), et on peut utiliser les parenthèses capturantes pour créer des 'variables'. Et ces variables, on peut les utiliser pour indiquer la cible de l'alias.
Ainsi, si tu veux faire pointer
/images/example.png vers /watermark.php?filename=example.png,
On écrira ceci :
RewriteEngine On RewriteRule ^images/(.+)$ /watermark.php?filename=$1 [L]Donc dans watermark.php, on peut utiliser $_GET['filename']
Mais en combinant AddHandler et Action, ça revient au même, sauf que on utilise $_SERVER['PATH_INFO']
Bonsoir,
En gros tu veut juste intégrer un texte ou une image sur l'image affichée sur le site sans que celle-ci en soit modifiée et que quand on veut l'enregistrer on a pas l'image d'origine mais celle modifiée "virtuellement" ?
En gros tu veut juste intégrer un texte ou une image sur l'image affichée sur le site sans que celle-ci en soit modifiée et que quand on veut l'enregistrer on a pas l'image d'origine mais celle modifiée "virtuellement" ?
Bonsoir
oui c'est exactement ça :)
je veux en fait qu'au téléchargement on ait le copyright. Je n'arrive à l'avoir qu'à l'affichage...
oui c'est exactement ça :)
je veux en fait qu'au téléchargement on ait le copyright. Je n'arrive à l'avoir qu'à l'affichage...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir !
Bon alors qq précisions :
à la racine de mon site, j'ai un fichier htaccess qui désigne un fichier (Watermark.php). C'est le fichier qui déclenche à l'affichage de n'importe quelle image du dossier la création d'une seconde image (c'est du texte chez moi) s'affichant sur la première.
ensuite je fais des liens tous bêtes et mes images s'affichent avec le copyright.
ça répond à tes questions?
Bon alors qq précisions :
à la racine de mon site, j'ai un fichier htaccess qui désigne un fichier (Watermark.php). C'est le fichier qui déclenche à l'affichage de n'importe quelle image du dossier la création d'une seconde image (c'est du texte chez moi) s'affichant sur la première.
addhandler WaterMark jpg gif jpeg action WaterMark /Photos/WaterMark.php
ensuite je fais des liens tous bêtes et mes images s'affichent avec le copyright.
ça répond à tes questions?
Salut,
Je te remercie de ta réponse, qui m'enchante car donc oui, selon toi, pour télécharger une image avec une watermark, il y a une possibilité. :)
Reste la mise en oeuvre, qui n'est pas une mince affaire car je débute...
J'ai essayé de modifier cette partie du coup (ds le fichier watermark.php):
en changeant aussi mes liens de fichier, mais sans succès...
:(
Je me permets de mettre des bouts de code... (dont le fichier complet de watermark) car je n'arrive pas à mettre en place la solution de AvionF16...
Si quelqu'un peut m'aider...
Lien type dans les autres fichiers :
Fichier .htaccess (à la racine du site)
Fichier Watermark.php
Je te remercie de ta réponse, qui m'enchante car donc oui, selon toi, pour télécharger une image avec une watermark, il y a une possibilité. :)
Reste la mise en oeuvre, qui n'est pas une mince affaire car je débute...
J'ai essayé de modifier cette partie du coup (ds le fichier watermark.php):
/* DOSSIER COURANT -> pour définir le nom de la watermark -> pour afficher le contenu d'un array : var_dump(pathinfo($_SERVER['SCRIPT_FILENAME'])); */
en changeant aussi mes liens de fichier, mais sans succès...
:(
Je me permets de mettre des bouts de code... (dont le fichier complet de watermark) car je n'arrive pas à mettre en place la solution de AvionF16...
Si quelqu'un peut m'aider...
Lien type dans les autres fichiers :
<a href="Photos/mon_image.png"><img src="Photos/miniatures/mon_image.png"/></a>
Fichier .htaccess (à la racine du site)
addhandler WaterMark jpg gif jpeg action WaterMark /Photos/WaterMark.php
Fichier Watermark.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', 'right'); define('WATERMARK_ALIGN_V', 'bottom'); define('WATERMARK_MARGIN', '5'); /* 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', './wtmk.png'); define('WATERMARK_OPACITY', '60'); /* DOSSIER COURANT -> pour définir le nom de la watermark NB : split() découpe une lien_ige en un tableau de mots -> pour afficher le contenu d'un array : var_dump(pathinfo($_SERVER['SCRIPT_FILENAME'])); */ $wtmk_temp = 'Copyright "Mariage de Céline et Abdou" 03/2011, tous droits réservés. '; /* /* WATERMARK_TEXT 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', $wtmk_temp); define('WATERMARK_TEXT_FONT', '2'); define('WATERMARK_TEXT_SHADOW', 'yes'); define('WATERMARK_TEXT_COLOR', '#FFFFFF'); // FIN DE LA CONFIGURATION $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];//largeur $original_image_height = $original_image_info[1];//hauteur $original_image_imagetype = $original_image_info[2];//type de l'image $original_image_mime_type = $original_image_info['mime'];//type 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 galerie."; 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,null,100); } elseif ($original_image_format == IMAGETYPE_PNG) { imagepng($source_image,null,100); } ?>