Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рамка шрифта
 
 автор: Vitaleks   (16.09.2008 в 23:54)   письмо автору
 
 

Доброго времени суток. Столкнулся с проблемой, как по средствам пхп сделать обводку шрифта (на картинке) скажем красного цвета ? http://allnfs.ru/test/index.php?l=line_typeanim5_s.gif&b=d_typeanim11.gif&t=&d=1&m=1&y=2008
Заранее спасибо

  Ответить  
 
 автор: sim5   (17.09.2008 в 10:32)   письмо автору
 
   для: Vitaleks   (16.09.2008 в 23:54)
 

Обводка, это надо понимать обвести шрифт по контуру, а рамка, это рамка вокруг бокса текста. Если рамка, то так (выводит рамку вокруг текста на удалении 1рх от него):
<?
$im 
imagecreate (12060);
$font "arial.ttf";
$text "Testing";
$black imagecolorallocate ($im000);
$white imagecolorallocate ($im255255255);
$red imagecolorallocate ($im25500);
$box imagettftext ($im2001634$white$font$text);
$xb1 $box[6] - 2;
$xb2 $box[2] + 1;
$yb1 $box[1] + 1;
$yb2 $box[7] - 2;
imagerectangle ($im$xb1$yb1$xb2$yb2$red);
header ("Content-type: image/gif");
imagegif ($im);
imagedestroy ($im);
?>

  Ответить  
 
 автор: Vitaleks   (17.09.2008 в 12:19)   письмо автору
 
   для: sim5   (17.09.2008 в 10:32)
 

Пордон, не дописал , нужна обводка и рамка. Спасибо

решил не мастерить лесопед, сделал следующие

imagefttext($img,6,0,9,$img_h+9,$red,$font,$text);
imagefttext($img,6,0,11,$img_h+11,$red,$font,$text);
imagefttext($img,6,0,11,$img_h+9,$red,$font,$text);
imagefttext($img,6,0,9,$img_h+11,$red,$font,$text);
imagefttext($img,6,0,10,$img_h+11,$red,$font,$text);
imagefttext($img,6,0,10,$img_h+9,$red,$font,$text);
imagefttext($img,6,0,9,$img_h+10,$red,$font,$text);
imagefttext($img,6,0,11,$img_h+10,$red,$font,$text);

imagefttext($img,6,0,10,$img_h+10,$black,$font,$text);


Вопрос: будет ли нагрузка на сервер при большой аудитории (запрос на этот файл - картинку)? если да - какое есть еще решение?

  Ответить  
 
 автор: sim5   (17.09.2008 в 21:36)   письмо автору
 
   для: Vitaleks   (17.09.2008 в 12:19)
 

И что это будет? Любое лишнее, это лишнее :)

  Ответить  
 
 автор: Vitaleks   (17.09.2008 в 22:37)   письмо автору
 
   для: sim5   (17.09.2008 в 21:36)
 

получается обводка текста

  Ответить  
 
 автор: Vitaleks   (17.09.2008 в 19:46)   письмо автору
24.6 Кб
 
   для: Vitaleks   (16.09.2008 в 23:54)
 

возникла еще одна проблема, перешел на более качественные ПНГ изображения, всего их 5
1 - основной фон, 2,30 кб пнг +альфа
2 - декоративная картинка весом 50 кб (можно 1 и 2 изоб. совместить)
3 - линейки, 1,19 кб пнг +альфа
4 - стрелка, 1,19 кб пнг +альфа
4,1 (пока идея) декоративная картинка весом 10-20 кб
5 - текст (двух цветный)
6 - второстепенный фон (блик), 1,40 кб пнг +альфа

в итоге http://allnfs.ru/test/img.php?l=line_typeanim4_s.gif&b=d_typeanim10.gif&d=1199134800&t=7+Dv4uDv4g==.png

а должно - в файле userline.gif

  Ответить  
 
 автор: sim5   (17.09.2008 в 21:36)   письмо автору
 
   для: Vitaleks   (17.09.2008 в 19:46)
 

??? Не понял, вы о чем?

PS. Кстати, может быть лучше сделать надпись на фоне с некоторой прозрачностью?

  Ответить  
 
 автор: Vitaleks   (17.09.2008 в 22:36)   письмо автору
 
   для: sim5   (17.09.2008 в 21:36)
 

ладно, проехали с этим... увы увы увы, красочные картинке в пнг формате обрабатывается коряво...

м... все же, как реализовать следующие - наложение ПНГ картинки (пример - http://allnfs.ru/test/images/begunok.png) на картинку?
P.S. функцией imagecopymerge($im,$begunok,0,0,0,0,700,90,100); накладывается, но альфа поддержки нет

  Ответить  
 
 автор: sim5   (17.09.2008 в 22:37)   письмо автору
 
   для: Vitaleks   (17.09.2008 в 22:36)
 

Вы что хотите, тап наложить логотип (текст например) с прозрачной областью на изображение?

  Ответить  
 
 автор: Vitaleks   (17.09.2008 в 23:04)   письмо автору
 
   для: sim5   (17.09.2008 в 22:37)
 

http://allnfs.ru/test/index2.php вот смотрите что получается

  Ответить  
 
 автор: sim5   (18.09.2008 в 05:17)   письмо автору
 
   для: Vitaleks   (17.09.2008 в 23:04)
 

Ну нормально, правда не сразу разобрать, что справа бампер (?). Получается, значит хорошо, а в чем вопрос тогда?

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 12:19)   письмо автору
 
   для: sim5   (18.09.2008 в 05:17)
 

в том что юзаю пнг картинку - которая почемуто неотображается, и шрифт который должен быть черно-белым становится серым...
...
наладил стрелочку http://allnfs.ru/test/index2.php

Стрелка почемуто удаляет из под себя фон, а нужно наложение - как быть?

  Ответить  
 
 автор: sim5   (18.09.2008 в 12:49)   письмо автору
 
   для: Vitaleks   (18.09.2008 в 12:19)
 

Если вы про отображение png в IE, то с этой проблемой к Биллу, я в Опера вижу вашу картинку. Что касается чего-то непонятного (по вашему стрелочка), то заготовтье эту картинку, например, в Шопике, с уже прозрачным фоном, а потом наложите ее просто на нужное вам изображение. То что прозрачно, будет прозрачным, результат выводите и все на этом.

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 14:41)   письмо автору
 
   для: sim5   (18.09.2008 в 12:49)
 

нет, проблема именно при обработке (сборке) на сервере...
IE 7 поддерживает прозрачность пнг

  Ответить  
 
 автор: sim5   (18.09.2008 в 15:07)   письмо автору
 
   для: Vitaleks   (18.09.2008 в 14:41)
 

Какие проблемы? Если с наложением этой стрелки (как вы ее называете), то приготовьте ее в Фотошоп и накладывайте.

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 15:42)   письмо автору
 
   для: sim5   (18.09.2008 в 15:07)
 

идея заключается в том, что этот скрипт высчитвает время прибывания на сайте (от регистрации до сего момента), а стрелочка - бегунок показывает это на линейки... С гиф изображениями все окей, а вот с пнг глюки
для сраванения
http://allnfs.ru/test/index2.php?d=1199134800 - стрелка в ПНГ формате
http://allnfs.ru/test/index1.php?d=1199134800 - стерлка в ГИФ формате (утрачена подсветка)

  Ответить  
 
 автор: sim5   (18.09.2008 в 15:46)   письмо автору
 
   для: Vitaleks   (18.09.2008 в 15:42)
 

Как вы накладываете эту стрелку (код)? Прикрепите png изображение вашей стрелки. Вы убрали на нем фон?

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 15:55)   письмо автору
 
   для: sim5   (18.09.2008 в 15:46)
 

как его скрыть? ладно... содержимое с index2.php
<?php 
header
("Content-type: image/png");

$beg=imagecreatefrompng('images/begunok.png');
$rightimage=imagecreatefromgif('images/right/1.gif');
$usertext="Текст юзера";

$beg_sx=imagesx($beg);
$beg_sy=imagesy($beg);

$out=imagecreate(700,90);
imagecopy($out,$rightimage,0,0,0,0,700,90);

$pixpm=353/12;
$std=$_GET['d'];
$ed=time();

$sid=3600*24;
$sim=3600*30*24;

$sty=mktime(0,0,0,0,0,date('Y',$std));
$offset=$ed-$std;
$days=intval($offset/86400);
$monsz=0;
while(
$days>30)
{
    
$monsz++;
       
$days=$days-30;
}

$beg_x=$monsz*$pixpm;

imagecopy($out,$beg,$beg_x,5,0,0,$beg_sx,$beg_sy);

$black imageColorAllocate($out000);
$white imageColorAllocate($out255255255);

$font "micron.ttf"
$text $usertext.'  дней Copyright (c) AllNFS.Ru'

imagefttext($out,6,0,9,50,$black,$font,$text);
imagefttext($out,6,0,11,52,$black,$font,$text);
imagefttext($out,6,0,11,50,$black,$font,$text);
imagefttext($out,6,0,9,52,$black,$font,$text);
imagefttext($out,6,0,10,52,$black,$font,$text);
imagefttext($out,6,0,10,50,$black,$font,$text);
imagefttext($out,6,0,9,51,$black,$font,$text);
imagefttext($out,6,0,11,51,$black,$font,$text);

imagefttext($out,6,0,10,50,-$white,$font,$text);

imagepng($out);

imagedestroy($out); 
?>  

  Ответить  
 
 автор: sim5   (18.09.2008 в 16:12)   письмо автору
 
   для: Vitaleks   (18.09.2008 в 15:55)
 

Значит так. Открываете Фотошоп. Создаете новое изображение нужного вам размера. Рисуете на нем как новый объект бегунок, или чего хотите. Затем можете удалить фон (либо просто выключить его) и "Сохранить для веб..." Выбираете формат PNG, указываете "Прозрачность", и сохраняете. Выключенный (или удаленный) фон, это и будет прозрачный участок в вашем png-файле. Теперь при наложении этого изображения функцией imagecopy() вы получите то, что хотите.

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 16:21)   письмо автору
 
   для: sim5   (18.09.2008 в 16:12)
 

делал именно как вы описали, сохраняю в ПНГ 24 с поддержкой прозрачности, в точности и % (альфа прозрачность). ПНГ 8 поддерживает лишь полную прозрачность , как и гиф...

  Ответить  
 
 автор: sim5   (18.09.2008 в 16:49)   письмо автору
 
   для: Vitaleks   (18.09.2008 в 16:21)
 

Прикрепите сюда свою png (а лучше исходник psd) картинку этой стрелки или чего там.

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 18:01)   письмо автору
28.7 Кб
 
   для: sim5   (18.09.2008 в 16:49)
 

Держите. Не могу жертвовать дизайном, может тогда с гиф картинок и фун imagecopymerge(); собрать нужную мне стрелку, при этом каждый слой делать менее прозрачным? при 12000 просмотров (запросов) в день сервер не уйдет в даун?

  Ответить  
 
 автор: sim5   (18.09.2008 в 18:58)   письмо автору
30 Кб
 
   для: Vitaleks   (18.09.2008 в 18:01)
 

Я взял вашу картинку как фон, и он обязательно должен быть в формате JPG, PNG, а никак не GIF (это индексированное изображение).
<?
$beg 
imagecreatefrompng('arrow.png');
 
//то на что накладываем, это JPG
$rightimage=imagecreatefromjpeg('fon.jpg');
imagecopy($rightimage$beg2408001952);
header ("Content-type: image/gif");
imagegif ($rightimage); //а вот сохранить можно и в GIF

А результат (он прикреплен) хоть в GIF сохраняйте. А что на что вы там еще ложите, для меня это лес темный ;-)

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 19:05)   письмо автору
 
   для: sim5   (18.09.2008 в 18:58)
 

а, ясно где допустил ошибку, спасибо

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 19:25)   письмо автору
 
   для: Vitaleks   (18.09.2008 в 19:05)
 

еще вопрос - реально ли увеличить лимит цветов ? 256 мало

  Ответить  
 
 автор: sim5   (18.09.2008 в 19:38)   письмо автору
 
   для: Vitaleks   (18.09.2008 в 19:25)
 

В чем, в GIF? Нет, нельзя, это максимум для этого формата. Выводите в JPG формате.

  Ответить  
 
 автор: Vitaleks   (18.09.2008 в 20:14)   письмо автору
 
   для: sim5   (18.09.2008 в 19:38)
 

все, разобрался, чтото показалось что он способен работать только с 256 не зависимо от формата

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования