2012-02-29 5 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 = imagesx($image); 
$img_h = imagesy($image); 

Удалить этот:

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

Поместите if сек на основе $ img_w или $ img_h, как это:

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'); 
Смежные вопросы