Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

WaterMark путем добавления черного подвала к изображению

9.9K
26 декабря 2009 года
Данила
38 / / 25.10.2006
Всем привет.

Делаю watermark. Возникла проблема. Бьюсь, но пока не получается.

Нужно к изображению (jpeg), снизу, добавить черный прямоугольник высотой 20px и длинной такой же как и изображение. И шрифтом Tahoma сделать двухстрочную надпись белым цветом в центре этого церного прямоугольника.

Буду благодарен если кто поможет. С изображениями раньше не работал практически. Темный лес для меня.

Вот что сделал. А как делать надписи, да еще и шрифтом, и как склеить изображения - хз (

 
Код:
$im = ImageCreate(500, 20);
ImageFilledRectangle($im, 1, 1, 500, 20, '000000' );
header ("Content-type: image/jpeg");
imagejpeg ($im);


UPD. Задачу решил. Но встала новая проблема: нужно не накладывать одно изображение на другое, а именно склеивать. Это реально вообще?
244
26 декабря 2009 года
UAS
2.0K / / 19.07.2006
Ну дык в чем проблема? Создаете новое изображение (пустое) через http://ru.php.net/manual/en/function.imagecreatetruecolor.php где его высоту задаете уже с учетом 20 пикселей, затем также просто накладываете одно изображение и второе, задавая им соответствующие координаты. Ничего сложного.
9.9K
26 декабря 2009 года
Данила
38 / / 25.10.2006
Решил проблему так. Может кому пригодится:

Код:
function hex_to_rgb($hex) {
    // remove '#'
    if(substr($hex,0,1) == '#')
        $hex = substr($hex,1) ;

    // expand short form ('fff') color to long form ('ffffff')
    if(strlen($hex) == 3) {
        $hex = substr($hex,0,1) . substr($hex,0,1) .
               substr($hex,1,1) . substr($hex,1,1) .
               substr($hex,2,1) . substr($hex,2,1) ;
    }

    if(strlen($hex) != 6)
        fatal_error('Error: Invalid color "'.$hex.'"') ;

    // convert from hexidecimal number systems
    $rgb['red'] = hexdec(substr($hex,0,2)) ;
    $rgb['green'] = hexdec(substr($hex,2,2)) ;
    $rgb['blue'] = hexdec(substr($hex,4,2)) ;

    return $rgb ;
  }
 
  function addwatermark($file, $params)
  {
             list($fwidth, $fheight, $ftype, $fattr)=getimagesize($file);
      $s_end_buffer_size  = 4096 ;
      $font_file = "tahoma.ttf";
      $font_color="000000";
      $font_size = "10";
      // create and measure the text
      $font_rgb = hex_to_rgb($font_color) ;
      $box = @ImageTTFBBox($font_size,0,$font_file,$text) ;
      $text_width = abs($box[2]-$box[0]);
      $text_height = abs($box[5]-$box[3]);
      $image =  ImageCreate($fwidth, 20);
      $background = ImageColorAllocate($image,0,0,0);
      $text_color = ImageColorAllocate($image,255,255,255);
      imagettftext($image, $font_size, 0, 5,  15, $text_color, $font_file, $params['text1']);  
      $paddingRight = $fwidth - strlen($params['text2'])*6.5 - 10;
      imagettftext($image, $font_size, 0, $paddingRight,  15, $text_color, $font_file, $params['text2']);  
      // Для наложения используется ImageAlphaBlending
      $photoImage = ImageCreateFromJPEG($file);
      ImageAlphaBlending($photoImage, true);
      $logoImage = $image;
      $logoW = ImageSX($logoImage);
      $logoH = ImageSY($logoImage);
      $yheight = $fheight - 20;
      imagecopymerge($photoImage, $logoImage, 0, $yheight, 0, 0, $logoW, $logoH, 100);
      ImageJPEG($photoImage, $file, 90);
      ImageDestroy($photoImage);
      ImageDestroy($logoImage);
  }


Запускаем:

 
Код:
addwatermark('./images/source.jpg', array("text1"=>'Название сайта', "text2"=>"текст выравненный по правому краю, если нужно"));


Обратите внимание что файл tahoma.ttf (файл со шрифтом) лежит в корне со скриптом. Если кому нужно подработайте под себя.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог