message réédité... question de lisibilité et de mise à jour des pb
Bonsoir à tous !
Je me suis inscrite sur le forum ce soir...
Grande débutante en programmation web, je cherche à faire quelque chose de trop complexe pour moi et j'espère que vous pourrez m'aider.
Pour faire court, je réalise pour une amie un pti site de partage de fichiers afin que nous puissions nous transmettre les photos de son mariage. Je suis contente, il est presque terminé.
...presque.
Sur mon mini-site donc, on peut uploader nos images.
Chaque image est rangée dans le dossier de son propriétaire.
Chaque dossier comporte 4 sous-dossiers : minia, miniatures, orig et downlads.
A chaque upload de fichiers, l'image est enregistrée dans le dossier du proprio de la photo (orig) et 3 nouvelles images sont créées : une vignette de taille moyenne (rangée dans miniatures), une toute petite miniature (rangée dans minia), et une image avec un copyright (watermark), (rangée dans downloads).
Tous les dossiers sont dans un "Super dossier", UploadedFiles.
J'ai besoin de créer une watermark sur chaque image et j'ai trouvé sur le web un exemple très bien expliqué, que j'ai du modifier pour le faire fonctionner directement à l'upload.
Il fabrique bien des images watermarkées des originaux uploadés s'il s'agit de jpeg, par contre ça ne fonctionne pas pour les png ou les gif.
Voici mon fichier
Ensuite je souhaiterais, au clic, forcer le téléchargement des images afin d'avoir immédiatement la possibilité de les enregistrer sur l'ordi, sans passer par le clic gauche... mais je n'y suis pas tout de suite...
J'espère qu'à la fin de cette page je ne vous ai pas tous perdu... Merci d'avance de votre aide et de votre temps.
Claire
Modifié par ClR (24 Apr 2011 - 18:25)

Bonsoir à tous !
Je me suis inscrite sur le forum ce soir...
Grande débutante en programmation web, je cherche à faire quelque chose de trop complexe pour moi et j'espère que vous pourrez m'aider.
Pour faire court, je réalise pour une amie un pti site de partage de fichiers afin que nous puissions nous transmettre les photos de son mariage. Je suis contente, il est presque terminé.


Sur mon mini-site donc, on peut uploader nos images.
Chaque image est rangée dans le dossier de son propriétaire.
Chaque dossier comporte 4 sous-dossiers : minia, miniatures, orig et downlads.
A chaque upload de fichiers, l'image est enregistrée dans le dossier du proprio de la photo (orig) et 3 nouvelles images sont créées : une vignette de taille moyenne (rangée dans miniatures), une toute petite miniature (rangée dans minia), et une image avec un copyright (watermark), (rangée dans downloads).
Tous les dossiers sont dans un "Super dossier", UploadedFiles.
J'ai besoin de créer une watermark sur chaque image et j'ai trouvé sur le web un exemple très bien expliqué, que j'ai du modifier pour le faire fonctionner directement à l'upload.
Il fabrique bien des images watermarkées des originaux uploadés s'il s'agit de jpeg, par contre ça ne fonctionne pas pour les png ou les gif.
Voici mon fichier
if (isset($fileProprio) && !empty($fileProprio))
{
// SI QQCH DS ENVOI
if (isset($fileName) && !empty($fileName))
{
// NOM DE FICHIER == $file
$file=$fileName;
/*
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 '.$fileProprio.', 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'].'Maroc/UploadedFiles/'.$fileProprio.'/orig/'.$file;
$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);
$source_image = imagecreatefromgif($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 ($original_image_imagetype == IMAGETYPE_GIF) {
header("Content-Type: " . $original_image_mime_type);
imagecreatefromgif($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_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
);
// Libération de la mémoire associée
imagedestroy($watermark_image);
}
}
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,'UploadedFiles/'.$fileProprio.'/downloads/'.$file,100); //chemin de l'image watermarkée
}
elseif ($original_image_imagetype == IMAGETYPE_PNG) {
imagepng($source_image,'UploadedFiles/'.$fileProprio.'/downloads/'.$file,100);//chemin de l'image watermarkée
}
elseif ($original_image_imagetype == IMAGETYPE_GIF) {
imagegif($source_image,'UploadedFiles/'.$fileProprio.'/downloads/'.$file,100);//chemin de l'image watermarkée
}
// Libération de la mémoire associée
imagedestroy($source_image);
}
}
Ensuite je souhaiterais, au clic, forcer le téléchargement des images afin d'avoir immédiatement la possibilité de les enregistrer sur l'ordi, sans passer par le clic gauche... mais je n'y suis pas tout de suite...
J'espère qu'à la fin de cette page je ne vous ai pas tous perdu... Merci d'avance de votre aide et de votre temps.
Claire
Modifié par ClR (24 Apr 2011 - 18:25)