[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помощь по совмещению двух функций
Cheizer
Просьба, подскажите пожалуйста, как совместить две функции, resize_img() и watermark(), а скорее watermark вписать в resize_img, отдельно пробовал оформлять функцию watermark(), все работает, но нет ресайза и общей работы, это непонятный чужой движок, пытаюсь реализовать наложение ватермарки на изображения. Сам начинающий человек в php, помогите советом!!!!! :)

 //функция ресайза изображения

function resize_img($from_file, $to_file, $maxx, $maxy, $tr = 'false',$watermark){

list($width, $height, $type, $attr) = getimagesize($from_file);
if($width > $maxx || $height > $maxy){
$k = ($width > $height)?($width / $maxx):($height / $maxy);
$x = $width / $k;
$y = $height / $k;
}else{
$x = $width;
$y = $height;
}
switch ($type){
case 1:
$im = imagecreatefromgif($from_file);
$fun = 'imagegif';
$head = 'gif';
break;
case 2:
$im = imagecreatefromjpeg($from_file);
$fun = 'imagejpeg';
$head = 'jpg';
break;
case 3:
$im = imagecreatefrompng($from_file);
$fun = 'imagepng';
$head = 'png';
break;
case 15:
$im = imagecreatefromwbmp($from_file);
$fun = 'imagewbmp';
$head = 'wbmp';
break;
case 16:
$im = imagecreatefromxbm($from_file);
$fun = 'imagexbm';
$head = 'xbm';
break;
default:
return false;
}

$nim = imagecreatetruecolor($x,$y);
imagecopyresampled($nim,$im,0,0,0,0,$x,$y,$width,$height);
if($tr=='false'){
$uid = uniqid('a');
Utils::fill($x,$y,$maxx,$maxy,$nim,$to_file,$fun);
}else{
$fun($nim,$to_file);
}
}



//функция наложения ватермарки

function watermark($original, $watermark, $placement = 'bottom=5,right=5', $destination = null) {
$original = urldecode($original);
$info_o = @getImageSize($original);
if (!$info_o)
return false;
$info_w = @getImageSize($watermark);
if (!$info_w)
return false;

list ($vertical, $horizontal) = split(',', $placement,2);
list($vertical, $sy) = split('=', trim($vertical),2);
list($horizontal, $sx) = split('=', trim($horizontal),2);

switch (trim($vertical)) {
case 'bottom':
$y = $info_o[1] - $info_w[1] - (int)$sy;
break;
case 'middle':
$y = ceil($info_o[1]/2) - ceil($info_w[1]/2) + (int)$sy;
break;
default:
$y = (int)$sy;
break;
}

switch (trim($horizontal)) {
case 'right':
$x = $info_o[0] - $info_w[0] - (int)$sx;
break;
case 'center':
$x = ceil($info_o[0]/2) - ceil($info_w[0]/2) + (int)$sx;
break;
default:
$x = (int)$sx;
break;
}

header("Content-Type: ".$info_o['mime']);

$original = @imageCreateFromString(file_get_contents($original));
$watermark = @imageCreateFromString(file_get_contents($watermark));
$out = imageCreateTrueColor($info_o[0],$info_o[1]);

imageCopy($out, $original, 0, 0, 0, 0, $info_o[0], $info_o[1]);

//Тут задаем размер изображения в которые можно добавлять Watermark
// $info_o[0] > 250 - ширина изображения должна быть больше 250 px
// $info_o[1] > 250 - высота изображения должна быть больше 250 px


if( ($info_o[0] > 250) && ($info_o[1] > 250) )
{
imageCopy($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
}

switch ($info_o[2]) {
case 1:
imageGIF($out);
break;
case 2:
imageJPEG($out);
break;
case 3:
imagePNG($out);
break;
}

imageDestroy($out);
imageDestroy($original);
imageDestroy($watermark);

return false;
}





Спустя 7 минут, 36 секунд (29.01.2011 - 16:26) Arni написал(а):
А вот так вот нельзя?


function f1(){
return 'Hi';
}

function f2(){
return f1();
}

echo f2();

Спустя 8 минут, 55 секунд (29.01.2011 - 16:35) Cheizer написал(а):
тоесть отдельно функции оформить нужно? И я не понял по поводу return f1() ?! wink.gif

Спустя 1 минута, 43 секунды (29.01.2011 - 16:36) Arni написал(а):
Я про то что можно не совмещать, а просто внутри функции ресайз вызвать функцию ватермарки.

Спустя 3 минуты, 52 секунды (29.01.2011 - 16:40) Cheizer написал(а):
Спасибо за участие, я сделал немного по другому, вроде все получилось, осталось подточить smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.