[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: resize_img + watermark
Cheizer
разбираюсь с чужим движком, задача реализовать при добавлении рисунка накладывать на него watermark.

нашол в классе функцию загрузки которая устианавливает основные настройки имени и загрузки изображения:

if(@is_uploaded_file($_FILES['photo1']['tmp_name'])){
$item = $this->getItem($id);
$uid = uniqid('a');
$file = $uid.$_FILES['photo1']['name'];
Utils::resize_img($_FILES['photo1']['tmp_name'], IMAGES.'/icon_'.$file, 132,96);
Utils::resize_img($_FILES['photo1']['tmp_name'], IMAGES.'/max_'.$file, 520,380);
IMAGES.'/icon_'.$file);
chmod(IMAGES.'/icon_'.$file, 0644);
chmod(IMAGES.'/max_'.$file, 0644);
$set['photo1'] = $file;
}




тут вижу идет подключение из другого файла самой функции resize_img нашел ее:

function resize_img($from_file, $to_file, $maxx, $maxy, $tr = 'false'){
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);
//imagecopyresized($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);
}
}



подскажите пожалуйста! Как к этому всему добавить наложение "watermark"?!




Спустя 56 минут, 22 секунды (26.01.2011 - 14:05) Evilsoul написал(а):
  • чепуха какая-то причем тут ресайз к вотермарку?
  • что тебе нужно сделать вотермарк или изменить размер изображения, или загрузить его?
  • а где здесь функция наложения подписи?


ЗЫ код ужасен, советую такими не пользоваться.

Спустя 28 минут, 15 секунд (26.01.2011 - 14:33) Cheizer написал(а):
в том и дело что нужно прикрутить к этому ужасному добавление ваермарки sad.gif, а я не могу разобраться даже в какое место прикручивать

Спустя 12 минут, 36 секунд (26.01.2011 - 14:46) Evilsoul написал(а):
А где код по созданию вотермарка?

Спустя 48 минут, 44 секунды (26.01.2011 - 15:34) Cheizer написал(а):
так в том то и дело Evilsoul, что мне еще не приходилось делать ватермарки, разбирал примеры но все они реализованы сами по себе, и как совместить с этим кодом мне сложно, поэтому и обращаюсь сюда за помощью :) , пытаюсь сейчас как то вот этот код подладить к тому что есть

//Настраиваем основные переменные и размещение
$image_src = 'guido_the_kitten.jpg';
$watermark_src = 'watermark.gif';
$opacity = 30;
$padding = 20;

//Загружаем изображения
$image = imagecreatefromjpeg($image_src);
$watermark = imagecreatefromgif($watermark_src);

//Введем и сохраним высоту и ширину наших изображений

list($image_width, $image_height) = getimagesize($image_src);
list($watermark_width, $watermark_height) = getimagesize($watermark_src);

//Установим окончательную позицию водного знака в зависимости от отступов и размера
$final_x = $image_width - $watermark_width - $padding;
$final_y = $image_height - $watermark_height - $padding;

//Скопируем наш водный знак на оригинальное изображение
imagecopymerge($image, $watermark, $final_x, $final_y, 0, 0, $watermark_width, $watermark_height, $opacity);

//Настраиваем элемент header, выводим изображение, очищаем память
header("Content-type: image/jpeg");
imagejpeg($image, null, 100);
imagedestroy($image);
imagedestroy($watermark);

Спустя 8 минут, 58 секунд (26.01.2011 - 15:43) Evilsoul написал(а):
Вот когда та всё беда что в начале поста выполнится, то у тебя по идее должно загрузится изображение на твой сервер, локальный или какой там ещё, изменится в размерах после функции ресайз и уж потом тебе нужно вот этой переменной $image_src задать значение путь к картинке (полный) на которую ты хочешь сделать наложение и здесь так же $watermark_src - только это твоя подпись.
Ну и если этот весь код верный всё получится.

Спустя 4 часа, 38 минут, 57 секунд (26.01.2011 - 20:22) Cheizer написал(а):
тоесть не нужно трогать эти функции? И дописывать в них ничего, а после всего деолать ватермарку?

Спустя 1 час, 58 минут, 39 секунд (26.01.2011 - 22:21) Evilsoul написал(а):
ты поробуй, а потом скажешь.

Спустя 2 часа, 48 минут, 53 секунды (27.01.2011 - 01:10) Cheizer написал(а):
нихера ниче не получается, я даже не пойму в каком файле это все делать, то ли в первом где эта функция:

 function update($id, &$set){
if(@$_REQUEST['delimg1']){
$item = $this->getItem($id);
if($item['photo1']){
@unlink(IMAGES.'/icon_'.$item['photo1']);
@unlink(IMAGES.'/max_'.$item['photo1']);

}
$set['photo1'] ='';
}

if(@is_uploaded_file($_FILES['photo1']['tmp_name'])){
$item = $this->getItem($id);
if($item['photo1']){
@unlink(IMAGES.'/icon_'.$item['photo1']);
@unlink(IMAGES.'/max_'.$item['photo1']);
}

$uid = uniqid('a');
$file = $uid.$_FILES['photo1']['name'];
Utils::resize_img($_FILES['photo1']['tmp_name'], IMAGES.'/icon_'.$file, 132,96);
Utils::resize_img($_FILES['photo1']['tmp_name'], IMAGES.'/max_'.$file, 520,380);
IMAGES.'/icon_'.$file);
chmod(IMAGES.'/icon_'.$file, 0644);
chmod(IMAGES.'/max_'.$file, 0644);
$set['photo1'] = $file;
}





толи во втором файле где сама function resize_img ((((((((((((((((

а пути есть только в первом файле это константа IMAGES.'/icon_'.$item['photo1'].
так где копать то???????



Спустя 9 часов, 28 минут, 49 секунд (27.01.2011 - 10:39) Evilsoul написал(а):
иди сюда и не морочь себе голову, делай всё по очереди и через пару месяцев сам напишешь такой скрипт.

Спустя 52 минуты, 45 секунд (27.01.2011 - 11:31) sergeiss написал(а):
Цитата (Evilsoul @ 27.01.2011 - 11:39)
и через пару месяцев дней сам напишешь такой скрипт.


Спустя 7 часов, 33 минуты, 43 секунды (27.01.2011 - 19:05) Cheizer написал(а):
понятно, видно я плохо объяснил, или просто нет того кто понимает реально в этом и имеет желание помочь, ладно, всем спасибо, пойду на другой форум морочить голову smile.gif

Спустя 1 час, 4 минуты, 30 секунд (27.01.2011 - 20:10) sergeiss написал(а):
Cheizer - ну ты заходи, если чего smile.gif
Только учти, что на этом форуме принято думать самому (если забесплатно). Тогда тебе помогут, подскажут. А если за тебя писать, то за деньги. Это в другом разделе форума, где работу предлагают.
И я что-то категорически сомневаюсь, что на каком-то другом форуме ЗА ТЕБЯ будут делать.

Спустя 13 минут, 24 секунды (27.01.2011 - 20:23) Cheizer написал(а):
так вапще не одного совета дельного, я не просил ничего делать, в последнем посте только просил место указать поточнее с какой функцией работать, или вобще не трогать, потому как у меня два файла, из одного вызывается функция resize в другом, вобщем ладно...

Спустя 3 часа, 4 минуты, 48 секунд (27.01.2011 - 23:28) Cheizer написал(а):
Сам разобрался, без вас, все, проехали

Спустя 2 часа, 52 минуты, 42 секунды (28.01.2011 - 02:20) Админ написал(а):
а по отдельности эти функции работают ?
Быстрый ответ:

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