Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / вырисовка логотипа поверх изображения / 13 сообщений из 13, страница 1 из 1
20.02.2006, 09:07:38
    #33554884
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
пользую скрипт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<?
function imagecopyalpha(&$img, $logo, $alpha, $base_x, $base_y){

$width = imagesx($alpha);
$height = imagesy($alpha);
$base_width = imagesx($img);
$base_height = imagesy($img);

for ($x =  0 ; $x < $width; $x++, $base_x++) {
if ($base_x <  0 ) continue;
if ($base_x >= $base_width) break;
for ($y =  0 ; $y < $height; $y++, $base_y++) {
if ($base_y <  0 ) continue;
if ($base_y >= $base_height) break;

$img_color = imagecolorat($img, $base_x, $base_y);

$logo_color = imagecolorat($logo, $x, $y);

$a = (imagecolorat($alpha, $x, $y) & 0xff) /  255 . 0 ;


$r = (int) ((($img_color >>  16 ) & 0xff) * $a + ( 1 . 0  - $a) * (($logo_color >>  16 ) & 0xff));
$g = (int) ((($img_color >>  8 ) & 0xff) * $a + ( 1 . 0  - $a) * (($logo_color >>  8 ) & 0xff));
$b = (int) (($img_color & 0xff) * $a + ( 1 . 0  - $a) * ($logo_color & 0xff));

$new_color = ($r <<  16 ) | ($g <<  8 ) | $b;
imagesetpixel($img, $base_x, $base_y, $new_color);
}
$base_y -= $height;
}
}

$img=imagecreatefromjpeg("http://nikinfo.net/info/weather/836.JPEG");
$logo=imagecreatefromgif("http://nikinfo.net/img/logo.gif");
$alpha=imagecreatefromgif("http://nikinfo.net/info/weather/alpha.gif");
$base_x= 2 ;
$base_y= 2 ;

$img=imagecopyalpha(&$img, $logo, $alpha, $base_x, $base_y);

Header("Content-type: image/png");
imagepng($img);
?>
а он чего-то не пашет... ПРосто відает ошибку - типа изображение неврхможно показать...
Я уже и без header смотрел - все равно фигня какая-то... Никаких сообщений об ошибке.. Просто - Изображение испорчено...

Помогите добиться работоспособности.. или укажите на ошибку, если можете.
Спасибо.
...
Рейтинг: 0 / 0
20.02.2006, 12:43:03
    #33555464
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
...
Рейтинг: 0 / 0
20.02.2006, 16:37:04
    #33556376
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
ну спсб...
там ведь картинка... никаких сообщ об ошибках...
просто пишет что невернЫй формат рисунка.

Посмотрите пожалуйста алгоритм - там скорее всего ошибка.
...
Рейтинг: 0 / 0
20.02.2006, 16:46:31
    #33556406
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
twistfireникаких сообщ об ошибках...Уберите хидер или запускайте скрипт в консоли при включенных ошибках.
...
Рейтинг: 0 / 0
20.02.2006, 19:38:17
    #33556933
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
я уже убрал хидер, запускаю не с консоли а так...
вроде віводит -но почему-то просто темный квадрат
вот посмотрите http://nikinfo.net/info/weather/graph1.php

может я что-то напутал?
...
Рейтинг: 0 / 0
20.02.2006, 20:10:18
    #33556972
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
Если бы выводили без хидеров, то мы бы увидели не "Малевич на тёте", а текст отладки.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
20.02.2006, 20:45:38
    #33557005
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
да єто я уже сделал.. я нашел ошибку и исправил :)

Вот теперь другая ошибка - "малевич на тете"...

А должен быть прозрачный лого...
...
Рейтинг: 0 / 0
20.02.2006, 22:14:41
    #33557066
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
ну может кто-то видел скрипт для нанесения watermark на картинку?? Причем не просто прозрачного gifa, что сделать просто, а рисунка с альфа-каналом...
т.е. типа
есть исходное изображение background.jpeg
есть лого - logo.gif

и вот мы наносим лого на бєкграунд так, чтобі через лого был виден бєкграунд, т.е. лого как бы прозрачно...

я видел такое на сайтах и тот скрипт которым я пользуюсь должен реализовывать такую вещь, но вот что-то не выходит ...
...
Рейтинг: 0 / 0
20.02.2006, 22:49:14
    #33557085
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
усе... всем спасибо...
разобрался. Еще раз убедился - учиться и еще раз мучиться :)
...
Рейтинг: 0 / 0
20.02.2006, 22:53:02
    #33557088
4m@t!c
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
Так а как решили проблему??? потому как Малевич на тёте так и остался.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
21.02.2006, 09:09:16
    #33557372
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
http://nikinfo.net/info/weather/graph.php

там нужен просто альфа-канал для рисунков. Для маски.
...
Рейтинг: 0 / 0
21.02.2006, 13:15:56
    #33558167
Ajvengo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
twistfire не опубликуешь готовый скрипт для остальных???
...
Рейтинг: 0 / 0
21.02.2006, 13:55:00
    #33558314
twistfire
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вырисовка логотипа поверх изображения
а он в самом начале опубликован.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<?
function imagecopyalpha(&$img, $logo, $alpha, $base_x, $base_y){

$width = imagesx($alpha);
$height = imagesy($alpha);
$base_width = imagesx($img);
$base_height = imagesy($img);

for ($x =  0 ; $x < $width; $x++, $base_x++) {
if ($base_x <  0 ) continue;
if ($base_x >= $base_width) break;
for ($y =  0 ; $y < $height; $y++, $base_y++) {
if ($base_y <  0 ) continue;
if ($base_y >= $base_height) break;

$img_color = imagecolorat($img, $base_x, $base_y);

$logo_color = imagecolorat($logo, $x, $y);

$a = (imagecolorat($alpha, $x, $y) & 0xff) /  255 . 0 ;


$r = (int) ((($img_color >>  16 ) & 0xff) * $a + ( 1 . 0  - $a) * (($logo_color >>  16 ) & 0xff));
$g = (int) ((($img_color >>  8 ) & 0xff) * $a + ( 1 . 0  - $a) * (($logo_color >>  8 ) & 0xff));
$b = (int) (($img_color & 0xff) * $a + ( 1 . 0  - $a) * ($logo_color & 0xff));

$new_color = ($r <<  16 ) | ($g <<  8 ) | $b;
imagesetpixel($img, $base_x, $base_y, $new_color);
}
$base_y -= $height;
}
}

$img=imagecreatefromjpeg("http://nikinfo.net/info/weather/836.JPEG");
$logo=imagecreatefromgif("http://nikinfo.net/img/logo.gif");
$alpha=imagecreatefromgif("http://nikinfo.net/info/weather/alpha.gif");
$base_x= 2 ;//naprimer ^)
$base_y= 2 ;//

$img_to_see=imagecopyalpha(&$img, $logo, $alpha, $base_x, $base_y);

Header("Content-type: image/png");
imagepng($img);
?>

только повторюсь - изображение должно быть с alpha каналом
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / вырисовка логотипа поверх изображения / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]