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 :: Неправильно отображает цвет imagecolorallocate()

 PHP.SU

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


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

> Без описания
Microteam
Отправлено: 15 Января, 2012 - 14:22:22
Post Id



Гость


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


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




Доброе время суток. Вот у меня проблема такая imagecolorallocateнеправильно устанавливает цвет. Например я поставил на черный, на некоторых картинках то он черный а не некоторых белый, это что за магия?)

Вот сам код моего файла imager.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.  
  5. function make_image($line,$polz,$level, $text)
  6. {
  7.  
  8. /// Здесь загружаются изображения первое и второе
  9.  $img1 = imagecreatetruecolor(10, 10);
  10.  if (file_exists(ROOT_DIR.DS."pic".DS."lines".DS.$line.".png"))
  11.  $img1 = imagecreatefrompng(ROOT_DIR.DS."pic".DS."lines".DS.$line.".png");
  12.  elseif(file_exists(ROOT_DIR.DS."pic".DS."lines".DS.$line.".gif"))
  13.  $img1 = imagecreatefromgif(ROOT_DIR.DS."pic".DS."lines".DS.$line.".gif");
  14.  elseif(file_exists(ROOT_DIR.DS."pic".DS."lines".DS.$line.".jpg"))
  15.  $img1 = imagecreatefromjpeg(ROOT_DIR.DS."pic".DS."lines".DS.$line.".jpg");
  16.  else
  17.  return false;
  18.  
  19.  if (file_exists(ROOT_DIR.DS."pic".DS."polzunki".DS.$polz.".png"))
  20.  $img2 = imagecreatefrompng(ROOT_DIR.DS."pic".DS."polzunki".DS.$polz.".png");
  21.  elseif(file_exists(ROOT_DIR.DS."pic".DS."polzunki".DS.$polz.".gif"))
  22.  $img2 = imagecreatefromgif(ROOT_DIR.DS."pic".DS."polzunki".DS.$polz.".gif");
  23.  elseif(file_exists(ROOT_DIR.DS."pic".DS."polzunki".DS.$polz.".jpg"))
  24.  $img2 = imagecreatefromjpeg(ROOT_DIR.DS."pic".DS."polzunki".DS.$polz.".jpg");
  25.  else
  26.  return false;
  27.  
  28. // Узнаем размер
  29. $img1_w = imagesx($img1);
  30. $img1_h = imagesy($img1);
  31.  
  32. $img2_w = imagesx($img2);
  33. $img2_h = imagesy($img2);
  34.  
  35.  
  36.  
  37. // Этот свитч задает значение для $m на сколько пикселей двигать вторую картинку по первой в зависимости от параметра $level
  38. switch($level)
  39. {
  40.         case 1:
  41.           $m = 10;
  42.         break;
  43.  
  44.         case 2:
  45.           $m = 40;
  46.         break;
  47.  
  48.         case 3:
  49.           $m = 70;
  50.         break;
  51.  
  52.         case 4:
  53.           $m = 105;
  54.         break;
  55.  
  56.         case 5:
  57.           $m = 135;
  58.         break;
  59.  
  60.         case 6:
  61.           $m = 165;
  62.         break;
  63.  
  64.         case 7:
  65.           $m = 195;
  66.         break;
  67.  
  68.         case 8:
  69.           $m = 230;
  70.         break;
  71.  
  72.         case 9:
  73.           $m = 260;
  74.         break;
  75.  
  76.         case 10:
  77.           $m = 295;
  78.         break;
  79.  
  80.         case 11:
  81.           $m = 325;
  82.         break;
  83.  
  84.         case 12:
  85.           $m = 360;
  86.         break;
  87.  
  88. }
  89.  
  90.  
  91. // Здесь мы собираем изображение
  92. imagecopyresized($img1, $img2, $m, 27, 0, 0, $img2_w, $img2_h, $img2_w, $img2_h );
  93. imagedestroy($img2);
  94.  
  95. ///////// ВОТ ЗДЕСЬ РИСУЕТСЯ ТЕКСТ И ЗДЕСь ЧЁ-ТО НЕ ТАК
  96. imagettftext($img1, 12, 0, 20, 100, imagecolorallocate($img1, 0, 0, 0), ROOT_DIR.DS."fonts".DS."arial.ttf", win2uni($text));
  97.  
  98. return $img1;
  99. }
  100.  
  101. function win2uni($s)
  102.   {
  103.     $s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5
  104.     // преобразование iso8859-5 -> unicode:
  105.     for ($result='', $i=0; $i<strlen($s); $i++) {
  106.       $charcode = ord($s[$i]);
  107.       $result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
  108.     }
  109.     return $result;
  110.   }
  111.  
  112. ?>
  113.  


-----
int i = 6; ++i + i++ = ?
 
 Top
PATCH
Отправлено: 15 Января, 2012 - 14:34:00
Post Id



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


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


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




мб это зависет от типа картинки? jpg png gif , напиши отдельный скрипт и создай в нем 3 картинки разных типов с одинаковым заданым цветов imagecolorallocate($img1, 0, 0, 0) p.s я в графики не силен) эт просто догадка)

(Отредактировано автором: 15 Января, 2012 - 14:34:45)

 
 Top
Microteam
Отправлено: 15 Января, 2012 - 14:34:39
Post Id



Гость


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


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




У меня только png) На остальное не обращайте внимание)


-----
int i = 6; ++i + i++ = ?
 
 Top
PATCH
Отправлено: 15 Января, 2012 - 14:38:56
Post Id



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


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


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




ты уверен? рандома с цветами я тут не вижу.по обновляй страницу и посмотри тип картинки когда черная и когда белая

(Отредактировано автором: 15 Января, 2012 - 14:39:41)

 
 Top
Microteam
Отправлено: 15 Января, 2012 - 14:40:01
Post Id



Гость


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


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




Я в начале думал сделать мультиформатным, а потом передумал, и теперь у меня токо png читает остальное я закоментировал)


-----
int i = 6; ++i + i++ = ?
 
 Top
PATCH
Отправлено: 15 Января, 2012 - 14:45:01
Post Id



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


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


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




http://php.net/manual/ru/functio...reatefrompng.php
http://www.php.su/functions/?imagecreatefrompng
везде в примерах задаются 2 цвета подряд 255.255.255 и 0.0.0 я хз для чего ет)
а поспешил) один для функции imagefilledrectangle
другой для шрифта)

(Отредактировано автором: 15 Января, 2012 - 14:47:15)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB