Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с графикой

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: библиотека GD и нетолько
Okula
Отправлено: 23 Марта, 2011 - 19:19:33
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




У меня возникла проблемма при размещени текста на изображении.
Функцией imagestring() я пишу текст на изображении. Цвет текста указываю с помощью функции imagecolorallocate()
Проблемма заключается в том что на каждом изображении текст пишется различным цветом (не тем который указан в функции imagecolorallocate()) из-за чего такие проблемы могут быть?
 
 Top
grefon
Отправлено: 23 Марта, 2011 - 19:21:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




А покажите весь код.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
ALEN
Отправлено: 23 Марта, 2011 - 19:23:59
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Okula
Вот мой велосипед http://forum.php.su/topic.php?fo...35&topic=736
есть еще много готовых, чем не подходит?
 
 Top
Okula
Отправлено: 23 Марта, 2011 - 19:43:22
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




Вот код. Превьюшку делаю:
PHP:
скопировать код в буфер обмена
  1. $pach = SCRIN_DIR.$inf['scrin'];
  2.  
  3. if(preg_match('/\.gif$/i', $pach)){$old = imageCreateFromGif($pach);}
  4. elseif(preg_match('/(\.jpg|\.jpeg|\.jpe)$/i', $pach)){$old = imageCreateFromJpeg($pach);}
  5. elseif(preg_match('/\.png$/i', $pach)){$old = imageCreateFromPNG($pach);}
  6. $w = imagesx($old);
  7. $h = imagesy($old);
  8. $im = imagecreate(IMG_X, IMG_Y);
  9. imagecolorallocate($im, 255, 255, 255);
  10. imagecopyresized($im, $old, 0, 0, 0, 0, IMG_X, IMG_Y, $w, $h);
  11. $color = imagecolorallocate($im, 213, 59, 0);
  12. imagestring($im, 3, 5, (IMG_Y-17), $_SERVER['HTTP_HOST'], $color);
  13.  
  14. header('Content-type: image/gif');
  15. imagegif($im,null,100);

(Отредактировано автором: 23 Марта, 2011 - 19:46:52)

 
 Top
ALEN
Отправлено: 23 Марта, 2011 - 19:54:00
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Okula
Вот как выглядит создание привьюшки с помощью моего класса:
http://forum.php.su/topic.php?fo...35&topic=736

PHP:
скопировать код в буфер обмена
  1. $img=new cms_img;
  2. $img->load("111.jpg");    //  загружаем исходное изображение
  3. $img->text("CLASS CMS_IMG","action.ttf","#F5a50f",30,-30,20,20,100); // накладываем надпись "CLASS CMS_IMG" цветом "#F5a50f" - остальные параметры читай в инструкции к классу, если не нужно - удалить эту строку
  4. $img->setlogo("logo.png",1);    // накладываем логотип, если не нужно - удалить эту строку
  5. $img->resize("ширина","высота"); // изменяем размеры изображения в пикселях, если не нужно - удалить эту строку
  6. $img->save("111.jpg"); // сохранить изображение
  7. $img->output(); // эта строка используется, если код генерирует и отображает картинку, если не нужно - удалить эту строку
  8. $img->destroy();  // освобождаем память от картинки


Мой класс куда удобней использовать чем твоим методом, в инете можно найти еще похожие классы

(Отредактировано автором: 23 Марта, 2011 - 19:58:09)

 
 Top
Okula
Отправлено: 23 Марта, 2011 - 20:00:09
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




ALEN, спасибо конечно, но я хочу разобраться со своей проблеммой не с помощью чужого кода. Понять из-за чего возникает она, чтобы не допускать таких ошибок в дальнейшем.
Так как с графикой большого опыта работы не имел раньше то и прошу помощи.
 
 Top
ALEN
Отправлено: 23 Марта, 2011 - 20:06:05
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Okula
0) Нет смысла разбиратся, так как много готовых классов существует и так много действий нужно делать только в GD , остальные библиотеки решают этот вопрос несколькими строками.
1) Ты разрешение файла вычисляешь по его разрешению, а оно заведома может быть неверным, поэтому явная проблема.
2) (IMG_Y-17) - это для чего?
 
 Top
Okula
Отправлено: 23 Марта, 2011 - 20:22:53
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




ALEN, в константач IMG_X и IMG_Y находятся данные о размере нового изображения.
Это пользовательские константы.
(IMG_Y-17) этим я задаю значение текста по оси Y (его высоту по отношению к созданному изображению)
ALEN пишет:
0) Нет смысла разбиратся, так как много готовых классов существует и так много действий нужно делать только в GD , остальные библиотеки решают этот вопрос несколькими строками.

Пользоваться данными не представляя откуда они берутся вот в этом как раз и нет смысла.
 
 Top
ALEN
Отправлено: 23 Марта, 2011 - 20:27:33
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Okula
Чтоб понять о чем я говорю посмотри более лучший аналог GD - imagick
http://php.net/manual/ru/book.imagick.php
(Добавление)
И при наложении текста попробуй использовать imagettftext
 
 Top
Tango
Отправлено: 24 Марта, 2011 - 00:38:40
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Март 2011  


Помог: 1 раз(а)




Возможно проблема связана с php5-gd.
Попробуйте пересобрать php с поддержкой родного функционала, а не внешнего (в обычной сборке php использует внешние модули - видимо у Вас ошибка идет оттуда - "из-за пределов" php)
 
 Top
Okula
Отправлено: 24 Марта, 2011 - 14:49:19
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




ALEN пишет:
И при наложении текста попробуй использовать imagettftext

Пробовал использовать эту функцию, результат тот же. Цвет на разных картинках разный. Я вот подумал может это зависит от того какое я изображение открываю.
Если я открываю изображение jpg и накладываю его на gif то палитра цветов меняется.
Может в этом проблема?
(Добавление)
Решил проблему, нужно было создавать изображение функцией imagecreatetruecolor() а не imagecreate()
Вот теперь ещё один вопрос: можно ли задать стиль пользовательского шрифта. (как в ворде например: жирный, курсив, подчёркнутый)
Нужно сделать шрифт жирным.
(Добавление)
И ещё, можно ли сделать текст полупрозрачным? Я нашёл такую функцию imagecolortransparent() но я понимаю что она делает цвет полность прозрачным, а этого делать ненужно.
(Добавление)
С полупрозрачностью вопрос решён.
 
 Top
JustUserR
Отправлено: 24 Марта, 2011 - 17:03:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Okula Возможной причиной осуществления некорректного функционирования предполагаемого PHP-приложения, обеспечивающего добавление целевого текстового объекта на оригинальных графических объект, вследствие которого осущетвлялось провяление дифференциации используемого параметра цветовой составляющей характеристики для элемента текстового блока, является обеспечение применение ограниченной цветовой палитры, значащий ячейки которой производят хранение оригинальных параметров исходного изображения, в силу осуществляется операция подбора ближайшего цвета по хемминговскому расстоянию


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
ALEN
Отправлено: 24 Марта, 2011 - 19:31:31
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




1) Посмотри аргументы для imagegif()
2) У тебя создается прозрачное изображение + сам текст прозрачность изменена, вот и разница отображения
3) Вообще не пойму, почему бы не открыть мой же класс и не посмотреть как я выполнял ту или иную задачу, а то к примеру я вообще не представляю что выполняет imagecolorallocate($im, 255, 255, 255); в твоем коде.
 
 Top
Okula
Отправлено: 24 Марта, 2011 - 20:25:50
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


Помог: 42 раз(а)




ALEN пишет:
а то к примеру я вообще не представляю что выполняет imagecolorallocate($im, 255, 255, 255); в твоем коде.

Первый вызов этой функции задаёт цвет фона изображения.
Я уже всё реализовал кроме как изменение толщины шрифта текста.
 
 Top
ALEN
Отправлено: 24 Марта, 2011 - 21:07:06
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




imagecolorallocate() возвращает идентификатор цвета
imagefilledrectangle() - рисует заполненный прямоугольник.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB