Перейти к содержимому


- - - - -

PHP and Image


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 EgoDuh

EgoDuh
  • Пользователь

  • Пользователь
  • 171 сообщений
  • Город:Алтуфьевское ш дом 34
  • Интересы:Стрельба,программирование,и немного спорта

Отправлено 05.01.2006 - 13:43

Тут столкнулся с задачей наложения картинки на картинку.... другим языком...на продукцию..нужно наложить логотип.
Кто знает как можно сделать это через php?

#2 tsybulin

tsybulin
  • Пользователь

  • Пользователь
  • 202 сообщений

Отправлено 05.01.2006 - 14:41

EgoDuh (Четверг, 5 Января 2006, 14:43) писал:

Тут столкнулся с задачей наложения картинки на картинку.... другим языком...на продукцию..нужно наложить логотип.
Кто знает как можно сделать это через php?

<{POST_SNAPBACK}>


расширение GD для работы с изображениями
ImageCreateFromJPEG - берем источник из jpg, к примеру
ImageCreateFromPNG - берем лого из прозрачного PNG
ImageCopy - копируем одно вдругое
ImageJPEG - отсылаем результат в браузер или файл

#3 EgoDuh

EgoDuh
  • Пользователь

  • Пользователь
  • 171 сообщений
  • Город:Алтуфьевское ш дом 34
  • Интересы:Стрельба,программирование,и немного спорта

Отправлено 06.01.2006 - 11:32

тут
function add_logo($img)  {

$tmpTrans=@imagecreatefrompng("1.png");



$wmX = (imagesx($img)/2)-(imageSX($tmpTrans)/2);
$wmY = (imagesy($img)/2)-(imageSY($tmpTrans)/2);

imagecopymerge ($img,$tmpTrans, $wmX, $wmY,0, 0, imageSX($tmpTrans), imageSY($tmpTrans),50);


imagedestroy($tmpTrans);






      return $img;

   }

Вот написал такой код... но логотип поверх картинки не прозрачный....почему то :)


Всё разобрался.... imagecopymerge глючит с пнг.... вместо неё использовал imagecopy

Посмотреть как работает можно http://www.o-kresla....=html&l=katalog

Сообщение отредактировал EgoDuh: 06.01.2006 - 12:25


#4 ivan1

ivan1
  • Знаток

  • Пользователь
  • 1 072 сообщений

Отправлено 13.01.2006 - 03:48

А как текст на картинку разными шрифтами накладывать? Никто не знает?

#5 snake

snake
  • Консультант

  • Пользователь
  • 897 сообщений
  • Пол:Мужчина
  • Город:msk-&gt;Черемушки
  • Интересы:delphi, php, tcp/ip =)

Отправлено 13.01.2006 - 04:06

http://php.rinet.ru/...n.imagechar.php
bool imagechar ( resource image, int font, int x, int y, string c, int color )
вторым параметром указывается шрифт, вывод осуществляется ПОСИМВОЛЬНО, т.е. в 5 параметр имеет смысл передавать только 1 символ.

#6 ivan1

ivan1
  • Знаток

  • Пользователь
  • 1 072 сообщений

Отправлено 13.01.2006 - 04:08

snake, А где шрифты должны хранится, и в каком формате? Просто мне надо чтото типа конструктора откыток сделать.

#7 snake

snake
  • Консультант

  • Пользователь
  • 897 сообщений
  • Пол:Мужчина
  • Город:msk-&gt;Черемушки
  • Интересы:delphi, php, tcp/ip =)

Отправлено 13.01.2006 - 08:50

вот это я не знаю там есть еще печать из шрифтов ttf, а вот в данной функции шрифт задается int-ом - след. должна быть функция, которая возвращает числовое значение системных шрифтов (или константа). Попробуй подставить clBlack Или cl_black что-то в этом роде. Но проще делать так:
array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )
http://php.rinet.ru/...magettftext.php

#8 Sulla

Sulla
  • Изучает местность

  • Пользователь
  • 89 сообщений
  • Пол:Мужчина

Отправлено 13.01.2006 - 17:28

есть ещё вариант с нвесением водяных знаков )  (прозрачную картинук ан основную картинку ))) )
function insert_watermark($min_image) 
    { global $dl_path; 
        $margin = 7; 

$this->watermark_image_light = $dl_path.'watermark_light.png'; 
$this->watermark_image_dark =  $dl_path.'watermark_dark.png'; 

        $image_width = imagesx($this->img["src"]); 
        $image_height = imagesy($this->img["src"]); 

        list($watermark_width, $watermark_height) 
            = getimagesize($this->watermark_image_light); 


                $watermark_x = $image_width - $margin - $watermark_width; 
                $watermark_y = $image_height - $margin - $watermark_height; 


        $watermark_x2 = $watermark_x + $watermark_width; 
        $watermark_y2 = $watermark_y + $watermark_height; 

        if ($watermark_x < 0 OR $watermark_y < 0 OR 
            $watermark_x2 > $image_width OR $watermark_y2 > $image_height OR 
         $image_width < $min_image OR $image_height < $min_image) 
        { 
           return; 
        } 


        $test = imagecreatetruecolor(1, 1); 
        imagecopyresampled($test, $this->img["src"], 0, 0, $watermark_x, $watermark_y, 1, 1, $watermark_width, $watermark_height); 
        $rgb = imagecolorat($test, 0, 0); 

        $r = ($rgb >> 16) & 0xFF; 
        $g = ($rgb >> 8) & 0xFF; 
        $b = $rgb & 0xFF; 

        $max = min($r, $g, $b); 
        $min = max($r, $g, $b); 
        $lightness = (double)(($max + $min) / 510.0); 
        imagedestroy($test); 

        $watermark_image = ($lightness < 0.5) ? $this->watermark_image_light : $this->watermark_image_dark; 

        $watermark = imagecreatefrompng($watermark_image); 

        imagealphablending($this->img["src"], TRUE); 
        imagealphablending($watermark, TRUE); 

        imagecopy($this->img["src"], $watermark, $watermark_x, $watermark_y, 0, 0,$watermark_width, $watermark_height); 

        imagedestroy($watermark); 

    } 


}

наеюсь разберётесь как работает ?

#9 VeRWaRs

VeRWaRs
  • Новичок

  • Новичок
  • 4 сообщений

Отправлено 13.11.2009 - 21:00

Увы это есть не на всех хостингах.




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей