2012-02-29 52 views
0

的大小我有以下代码,这是我在http://dolcepixel.com/how-to-watermark-all-your-uploaded-images/不同的水印图像取决于原始图像

我需要修改代码来使用不同的水印图像,如果原始图像是低于某一尺寸的来源。

我看到有一行关于如果它低于150x150不应用水印的代码行,但如何修改为使用不同的水印,而不是没有水印?

<?php 
//we tell the server to treat this file as if it wore an image 
header('Content-type: image/jpeg'); 
//image file path 
$img = $_GET['src']; 
//watermark position 
$p = $_GET['p']; if(!$p) $p = 'c'; 
$q = $_GET['q']; 
if(!$q || $q<0 || $q>100) $q = '93'; 
$filetype = substr($img,strlen($img)-4,4); 
$filetype = strtolower($filetype); 
if($filetype == ".gif") $image = @imagecreatefromgif($img); 
if($filetype == ".jpg") $image = @imagecreatefromjpeg($img); 
if($filetype == ".png") $image = @imagecreatefrompng($img); 
if (!$image) die(); 

//getting the image size for the original image 
$img_w = imagesx($image); 
$img_h = imagesy($image); 

//if the filename has 150x150 in it's name then we don't apply the watermark 
if (eregi("MTP-logo", $img)) { 
    imagejpeg($image, null, $q); die(); 
} else { 
    $watermark = @imagecreatefrompng('watermark.png'); 
} 
/* 
//if you want to use the watermark only on bigger images then use this instead of the condition above 
if ($img_w < "150") {//if image width is less then 150 pixels 
    imagejpeg($image, null, $q); die(); 
} else { 
    $watermark = @imagecreatefrompng('watermark.png'); 
} 
*/ 
//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 = ($img_w - $w_w)/2; 
    $dest_y = 0; 
} elseif ($p == "tr") { 
    $dest_x = $img_w - $w_w; 
    $dest_y = 0; 
} elseif ($p == "cl") { 
    $dest_x = 0; 
    $dest_y = ($img_h - $w_h)/2; 
} elseif ($p == "c") { 
    $dest_x = ($img_w - $w_w)/2; 
    $dest_y = ($img_h - $w_h)/2; 
} elseif ($p == "cr") { 
    $dest_x = $img_w - $w_w; 
    $dest_y = ($img_h - $w_h)/2; 
} elseif ($p == "bl") { 
    $dest_x = 0; 
    $dest_y = $img_h - $w_h; 
} elseif ($p == "bc") { 
    $dest_x = ($img_w - $w_w)/2; 
    $dest_y = $img_h - $w_h; 
} elseif ($p == "br") { 
    $dest_x = $img_w - $w_w; 
    $dest_y = $img_h - $w_h; 
} 
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $w_w, $w_h); 
imagejpeg($image, null, $q); 
imagedestroy($image); 
imagedestroy($watermark); 

?> 

回答

2

在此基础上(获得宽度和高度),你可以做到这一点:根据$ img_w或$ img_h,像

if (eregi("MTP-logo", $img)) { 
    imagejpeg($image, null, $q); die(); 
} else { 
    $watermark = @imagecreatefrompng('watermark.png'); 
} 

地点if S:

$img_w = imagesx($image); 
$img_h = imagesy($image); 

删除此这个:

if($img_w>1000)$watermark = @imagecreatefrompng('watermark1000.png'); 
else if($img_w>800)$watermark = @imagecreatefrompng('watermark800.png'); 
else if($img_w>600)$watermark = @imagecreatefrompng('watermark600.png'); 
else if($img_w>400)$watermark = @imagecreatefrompng('watermark400.png'); 
else if($img_w>200)$watermark = @imagecreatefrompng('watermark200.png'); 
else $watermark = @imagecreatefrompng('watermarkmini.png');