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
Форумы портала PHP.SU :: Версия для печати :: Проблема с графикой
Форумы портала PHP.SU » PHP » Программирование на PHP » Проблема с графикой

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

1. Okula - 23 Марта, 2011 - 19:19:33 - перейти к сообщению
У меня возникла проблемма при размещени текста на изображении.
Функцией imagestring() я пишу текст на изображении. Цвет текста указываю с помощью функции imagecolorallocate()
Проблемма заключается в том что на каждом изображении текст пишется различным цветом (не тем который указан в функции imagecolorallocate()) из-за чего такие проблемы могут быть?
2. grefon - 23 Марта, 2011 - 19:21:34 - перейти к сообщению
А покажите весь код.
3. ALEN - 23 Марта, 2011 - 19:23:59 - перейти к сообщению
Okula
Вот мой велосипед http://forum.php.su/topic.php?fo...35&topic=736
есть еще много готовых, чем не подходит?
4. Okula - 23 Марта, 2011 - 19:43:22 - перейти к сообщению
Вот код. Превьюшку делаю:
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);
5. ALEN - 23 Марта, 2011 - 19:54:00 - перейти к сообщению
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();  // освобождаем память от картинки


Мой класс куда удобней использовать чем твоим методом, в инете можно найти еще похожие классы
6. Okula - 23 Марта, 2011 - 20:00:09 - перейти к сообщению
ALEN, спасибо конечно, но я хочу разобраться со своей проблеммой не с помощью чужого кода. Понять из-за чего возникает она, чтобы не допускать таких ошибок в дальнейшем.
Так как с графикой большого опыта работы не имел раньше то и прошу помощи.
7. ALEN - 23 Марта, 2011 - 20:06:05 - перейти к сообщению
Okula
0) Нет смысла разбиратся, так как много готовых классов существует и так много действий нужно делать только в GD , остальные библиотеки решают этот вопрос несколькими строками.
1) Ты разрешение файла вычисляешь по его разрешению, а оно заведома может быть неверным, поэтому явная проблема.
2) (IMG_Y-17) - это для чего?
8. Okula - 23 Марта, 2011 - 20:22:53 - перейти к сообщению
ALEN, в константач IMG_X и IMG_Y находятся данные о размере нового изображения.
Это пользовательские константы.
(IMG_Y-17) этим я задаю значение текста по оси Y (его высоту по отношению к созданному изображению)
ALEN пишет:
0) Нет смысла разбиратся, так как много готовых классов существует и так много действий нужно делать только в GD , остальные библиотеки решают этот вопрос несколькими строками.

Пользоваться данными не представляя откуда они берутся вот в этом как раз и нет смысла.
9. ALEN - 23 Марта, 2011 - 20:27:33 - перейти к сообщению
Okula
Чтоб понять о чем я говорю посмотри более лучший аналог GD - imagick
http://php.net/manual/ru/book.imagick.php
(Добавление)
И при наложении текста попробуй использовать imagettftext
10. Tango - 24 Марта, 2011 - 00:38:40 - перейти к сообщению
Возможно проблема связана с php5-gd.
Попробуйте пересобрать php с поддержкой родного функционала, а не внешнего (в обычной сборке php использует внешние модули - видимо у Вас ошибка идет оттуда - "из-за пределов" php)
11. Okula - 24 Марта, 2011 - 14:49:19 - перейти к сообщению
ALEN пишет:
И при наложении текста попробуй использовать imagettftext

Пробовал использовать эту функцию, результат тот же. Цвет на разных картинках разный. Я вот подумал может это зависит от того какое я изображение открываю.
Если я открываю изображение jpg и накладываю его на gif то палитра цветов меняется.
Может в этом проблема?
(Добавление)
Решил проблему, нужно было создавать изображение функцией imagecreatetruecolor() а не imagecreate()
Вот теперь ещё один вопрос: можно ли задать стиль пользовательского шрифта. (как в ворде например: жирный, курсив, подчёркнутый)
Нужно сделать шрифт жирным.
(Добавление)
И ещё, можно ли сделать текст полупрозрачным? Я нашёл такую функцию imagecolortransparent() но я понимаю что она делает цвет полность прозрачным, а этого делать ненужно.
(Добавление)
С полупрозрачностью вопрос решён.
12. JustUserR - 24 Марта, 2011 - 17:03:05 - перейти к сообщению
Okula Возможной причиной осуществления некорректного функционирования предполагаемого PHP-приложения, обеспечивающего добавление целевого текстового объекта на оригинальных графических объект, вследствие которого осущетвлялось провяление дифференциации используемого параметра цветовой составляющей характеристики для элемента текстового блока, является обеспечение применение ограниченной цветовой палитры, значащий ячейки которой производят хранение оригинальных параметров исходного изображения, в силу осуществляется операция подбора ближайшего цвета по хемминговскому расстоянию
13. ALEN - 24 Марта, 2011 - 19:31:31 - перейти к сообщению
1) Посмотри аргументы для imagegif()
2) У тебя создается прозрачное изображение + сам текст прозрачность изменена, вот и разница отображения
3) Вообще не пойму, почему бы не открыть мой же класс и не посмотреть как я выполнял ту или иную задачу, а то к примеру я вообще не представляю что выполняет imagecolorallocate($im, 255, 255, 255); в твоем коде.
14. Okula - 24 Марта, 2011 - 20:25:50 - перейти к сообщению
ALEN пишет:
а то к примеру я вообще не представляю что выполняет imagecolorallocate($im, 255, 255, 255); в твоем коде.

Первый вызов этой функции задаёт цвет фона изображения.
Я уже всё реализовал кроме как изменение толщины шрифта текста.
15. ALEN - 24 Марта, 2011 - 21:07:06 - перейти к сообщению
imagecolorallocate() возвращает идентификатор цвета
imagefilledrectangle() - рисует заполненный прямоугольник.

 

Powered by ExBB FM 1.0 RC1