[reglé] Watermark.php à appeler dans fonction
Posté : 03 nov. 2013, 10:56
Bonjour,
J'ai réussi à watermarker mes images via un fichier récupéré sur le net watermark.php qui est appelé par htaccess
mais certaines images ne sont pas affichées directement par le header et transitent par une fonction show_image_in_imgtag.php ... dans ce cas là, le watermark ne fonctionne plus.
Je voudrais savoir si au moins c'est réalisable de modifier le show_image_in_imgtag.php pour qu'il appelle le watermark.php avant d'afficher l'image Par avance merci pour votre réponse.
Ci-dessous le show_image_in_imgtag.php :
et ci-dessous le watermark.php :
ps : J'ai tenté dans le show_image_in_imgtag.php de remplacer les readfile($fileout) par readfile(watermark($fileout)) mais sans résultat (image vide) et watermark($fileout) à la place de readfile($fileout) fait une erreur 500 
J'ai réussi à watermarker mes images via un fichier récupéré sur le net watermark.php qui est appelé par htaccess
Code : Tout sélectionner
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
#RewriteRule ^([^tn].*\.(gif|jpg|png|jpeg))$ watermark.php?image=$1 [NC]
RewriteRule ^(.*.(jpe?g|gif|png|bmp))$ watermark.php?image=$1 [NC]Je voudrais savoir si au moins c'est réalisable de modifier le show_image_in_imgtag.php pour qu'il appelle le watermark.php avant d'afficher l'image Par avance merci pour votre réponse.
Ci-dessous le show_image_in_imgtag.php :
Code : Tout sélectionner
<?php
define('_VALID_MOS', 1);
// Get the Joomla! configuration file
$config_file = '../../configuration.php';
include_once( $config_file );
if( isset($_REQUEST['mosConfig_absolute_path'])) die();
if( !isset( $mosConfig_absolute_path ) ) {
// We are in J! 1.5
define( '_JEXEC', 1 );
$mosConfig_absolute_path = dirname( $config_file );
}
include_once("../../administrator/components/com_virtuemart/virtuemart.cfg.php");
$resize_image = true;
// check if dynamic thumbnails are disabled or the GD Library is not available
if( PSHOP_IMG_RESIZE_ENABLE == '') {
$resize_image = false;
}
elseif (!extension_loaded('gd') && !dl('gd.so')) {
$resize_image = false;
}
include( CLASSPATH . "ps_main.php");
if( $resize_image ) {
// Image2Thumbnail will resize your images
include( CLASSPATH . "class.img2thumb.php");
}
$basefilename = @basename(urldecode($_REQUEST['filename']));
$filenames[] = IMAGEPATH."product/".$basefilename;
$resized_filenames[] = IMAGEPATH."product/resized/".$basefilename;
$filenames[] = IMAGEPATH."category/".$basefilename;
$resized_filenames[] = IMAGEPATH."category/resized/".$basefilename;
$newxsize = (int)@$_REQUEST['newxsize'] == 0 ? PSHOP_IMG_WIDTH : (int)@$_REQUEST['newxsize'];
$newysize = (int)@$_REQUEST['newysize'] == 0 ? PSHOP_IMG_WIDTH : (int)@$_REQUEST['newysize'];
// Don't allow sizes beyond 600 pixels
$newxsize = min( $newxsize, 600 );
$newysize = min( $newysize, 600 );
//Don't allow sizes under 40 pixels
$newxsize = max( $newxsize, 40 );
$newysize = max( $newysize, 40 );
if( $newxsize < $newysize ) {
// Don't let $newxsize be smaller than 55% of $newysize
$newxsize = max( $newxsize, 0.55 * $newysize );
}
elseif( $newysize < $newxsize ) {
// Don't let $newysize be smaller than 55% of $newxsize
$newysize = max( $newysize, 0.55 * $newxsize );
}
$maxsize = false;
$bgred = 255;
$bggreen = 255;
$bgblue = 255;
/* Minimum security */
$file_exists = false;
$i = 0;
foreach ( $filenames as $file ) {
if( file_exists( $file ) ) {
$file_exists = true;
$filename = $file;
break;
} elseif( file_exists($resized_filenames[$i])) {
$file_exists = true;
$filename = $resized_filenames[$i];
break;
}
++$i;
}
$file_exists or die('File does not exist');
$filename2 = $resized_filenames[$i];
$fileinfo = pathinfo( $filename );
$file = str_replace(".".$fileinfo['extension'], "", $fileinfo['basename']);
// In class.img2thumb in the function NewImgShow() the extension .jpg will be added to .gif if imagegif does not exist.
// If the image is a gif, and imagegif() returns false then make the extension ".gif.jpg"
if( $fileinfo['extension'] == "gif") {
if( function_exists("imagegif") ) {
$ext = ".".$fileinfo['extension'];
$noimgif="";
}
else {
$ext = ".jpg";
$noimgif = ".".$fileinfo['extension'];
}
}
else {
$ext = ".".$fileinfo['extension'];
$noimgif="";
}
if( $resize_image ) {
if( file_exists($filename2)) {
$fileout = $filename2;
} else {
$fileout = dirname( $filename2 ) .'/'.$file."_".$newxsize."x".$newysize.$noimgif.$ext;
}
} else {
$fileout = $filename;
}
// Tell the user agent to cache this script/stylesheet for an hour
$age = 3600;
header( 'Expires: '.gmdate( 'D, d M Y H:i:s', time()+ $age ) . ' GMT' );
header( 'Cache-Control: max-age='.$age.', must-revalidate' );
if( file_exists( $fileout ) ) {
// Try to delete the resized image if the original file is newer
if (filemtime($fileout) < filemtime($filename)) @unlink($fileout);
}
if( file_exists( $fileout ) ) {
/* We already have a resized image
* So send the file to the browser */
switch(strtolower($ext))
{
case ".gif":
header ("Content-type: image/gif");
readfile($fileout);
break;
case ".jpg":
header ("Content-type: image/jpeg");
readfile($fileout);
break;
case ".png":
header ("Content-type: image/png");
readfile($fileout);
break;
}
}
else {
/* We need to resize the image and Save the new one (all done in the constructor) */
$neu = new Img2Thumb($filename,$newxsize,$newysize,$fileout,$maxsize,$bgred,$bggreen,$bgblue);
/* Send the file to the browser */
switch($ext)
{
case ".gif":
header ("Content-type: image/gif");
readfile($fileout);
break;
case ".jpg":
header ("Content-type: image/jpeg");
readfile($fileout);
break;
case ".png":
header ("Content-type: image/png");
readfile($fileout);
break;
}
}
?>Code : Tout sélectionner
<?php
function watermark($original_image)
{
$path_cache_image = "/monsite.fr/cache"."/".md5($original_image).".jpeg";
$path_watermark="/monsite.fr/images/watermark/image_water.png";
$p = 'c';
/*
p correspond a la position souhaitee pour le watermark :
tl = top left
tc = top center
tr = top right
cl = center left
c = center of the image
cr = center right
bl = bottom left
bc = bottom center
br = bottom right
*/
$image=imagecreatefromjpeg($original_image);
list($imagewidth,$imageheight)=getimagesize($original_image);
$watermark=imagecreatefrompng($path_watermark);
list($watermarkwidth,$watermarkheight)=getimagesize($path_watermark);
if($watermarkwidth >= $imagewidth || $watermarkheight >= $imageheight)
{
$water_resize_factor_width = $imagewidth / $watermarkwidth;
$water_resize_factor_height = $imageheight / $watermarkheight;
if ($water_resize_factor_width <= $water_resize_factor_height)
{
$new_watermarkwidth = $watermarkwidth * $water_resize_factor_width / 1.2;
$new_watermarkheight = $watermarkheight * $water_resize_factor_width / 1.2;
}
else
{
$new_watermarkwidth = $watermarkwidth * $water_resize_factor_height / 1.2;
$new_watermarkheight = $watermarkheight * $water_resize_factor_height / 1.2;
}
$new_watermark = imagecreatetruecolor($new_watermarkwidth , $new_watermarkheight);
imagealphablending($new_watermark , false);
imagecopyresampled($new_watermark , $watermark, 0, 0, 0, 0, $new_watermarkwidth, $new_watermarkheight, $watermarkwidth, $watermarkheight);
$watermarkwidth = $new_watermarkwidth;
$watermarkheight = $new_watermarkheight;
$watermark = $new_watermark;
}
if($watermarkheight>$imageheight)
{
$water_resize_factor = $imagewidth / $watermarkwidth;
$new_watermarkwidth = $watermarkwidth * $water_resize_factor / 1.2;
$new_watermarkheight = $watermarkheight * $water_resize_factor / 1.2;
$new_watermark = imagecreatetruecolor($new_watermarkwidth , $new_watermarkheight);
imagealphablending($new_watermark , false);
imagecopyresampled($new_watermark , $watermark, 0, 0, 0, 0, $new_watermarkwidth, $new_watermarkheight, $watermarkwidth, $watermarkheight);
$watermarkwidth = $new_watermarkwidth;
$watermarkheight = $new_watermarkheight;
$watermark = $new_watermark;
}
//getting the image size for the watermark
$w_w = imagesx($watermark);
$w_h = imagesy($watermark);
if($p == "tl") {
$dest_x = 0;
$dest_y = 0;
} elseif ($p == "tc") {
$dest_x = ($imagewidth - $w_w)/2;
$dest_y = 0;
} elseif ($p == "tr") {
$dest_x = $imagewidth - $w_w;
$dest_y = 0;
} elseif ($p == "cl") {
$dest_x = 0;
$dest_y = ($imageheight - $w_h)/2;
} elseif ($p == "c") {
$dest_x = ($imagewidth - $w_w)/2;
$dest_y = ($imageheight - $w_h)/2;
} elseif ($p == "cr") {
$dest_x = $imagewidth - $w_w;
$dest_y = ($imageheight - $w_h)/2;
} elseif ($p == "bl") {
$dest_x = 0;
$dest_y = $imageheight - $w_h;
} elseif ($p == "bc") {
$dest_x = ($imagewidth - $w_w)/2;
$dest_y = $imageheight - $w_h;
} elseif ($p == "br") {
$dest_x = $imagewidth - $w_w;
$dest_y = $imageheight - $w_h;
}
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermarkwidth, $watermarkheight);
if(file_exists($path_cache_image))
{
$fp = fopen($path_cache_image, 'r'); // stream the image directly from the cachefile
fpassthru($fp);
}
else
{
imagejpeg($image,$path_cache_image); // pas encore d image watermarkee >> ecriture dans le cache
imagedestroy($image); // liberation memoire
$fp = fopen($path_cache_image, 'r'); // stream the image directly from the cachefile
fpassthru($fp);
}
}
header("Content-type:image/jpeg");
watermark($_GET['image']);
?>