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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Tek
Отправлено: 10 Января, 2014 - 12:01:10
Post Id


Новичок


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


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




Какую библиотеку лучше использовать? (GD,ImageMagick и пр) и если возможно алгоритм...
 
 Top
Ts.Saltan
Отправлено: 10 Января, 2014 - 19:15:58
Post Id



Посетитель


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


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




Tek пишет:
Какую библиотеку лучше использовать? (GD,ImageMagick и пр) и если возможно алгоритм...

gd с этим справится
PHP:
скопировать код в буфер обмена
  1.  
  2.         function GetColorArray($img){  
  3.                 $im = ImgCreate($img);
  4.                 $width = imagesx($im);
  5.                 $height = imagesy($im);
  6.                
  7.                 $data = array();
  8.                 for($y=0; $y<$height; $y++)
  9.                 {
  10.                         for($x=0; $x<$width; $x++)
  11.                         {
  12.                                 $rgb = imagecolorat($im, $x, $y);
  13.                                 $data[$x][$y] = imagecolorsforindex($im, $rgb);
  14.                         }
  15.  
  16.                 }
  17.                 return $data;
  18.         }
  19.  
  20.        
  21.         function ImgCreate($img){ //Автоматически определит тип картинки
  22.                 $tm = explode(".", $img);
  23.                 $ext = strtolower($tm[sizeof($tm)-1]);
  24.                 $root = false;
  25.                 switch($ext){
  26.                 case 'jpg':
  27.                 case 'jpeg':
  28.                         $root = imagecreatefromjpeg($img);
  29.                 break;
  30.                 case 'gif':
  31.                         $root = imagecreatefromgif($img);
  32.                 break;
  33.                 case 'png':
  34.                         $root = imagecreatefrompng($img);
  35.                 break;
  36.                 case 'bmp':
  37.                         $root = imagecreatefrombmp($img);
  38.                 break;
  39.                 default:
  40.                         $root = imagecreatefromstring($img);
  41.                 }
  42.  
  43.                 if(!imageistruecolor($root)){
  44.                         $x = imagesx($root);
  45.                         $y = imagesy($root);
  46.                         $temp = imagecreatetruecolor($x, $y);
  47.                         imagecopy($temp, $root, 0, 0, 0, 0, $x, $y);
  48.                         imagedestroy($root);
  49.                         $root = $temp;
  50.                         unset($temp);
  51.                 }
  52.                 return $root;
  53.         }
  54.  
  55.         $colors = GetColorArray('image.jpg');
  56.         var_export($colors);
  57.  

(Отредактировано автором: 10 Января, 2014 - 19:16:35)

 
 Top
Tek
Отправлено: 13 Января, 2014 - 07:47:07
Post Id


Новичок


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


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




Так я побывал, и данный способ не подходит ибо скрипт выполняется слишком долго...
 
 Top
Ts.Saltan
Отправлено: 13 Января, 2014 - 11:31:17
Post Id



Посетитель


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


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




Tek пишет:
Так я побывал, и данный способ не подходит ибо скрипт выполняется слишком долго...

ясное дело, что долго, это ж php, он не предназначен для таких задач
 
 Top
Tek
Отправлено: 13 Января, 2014 - 13:08:21
Post Id


Новичок


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


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




Может кому пригодиться
PHP:
скопировать код в буфер обмена
  1. $imagege = new Imagick(/image.jpg");
  2.        $imagege->setImageFormat("GRAY"); //Конкретно для моей задачи достаточно гродаций серого
  3.        $colors_string = $imagege->getImageBlob();

Время на выполнение ~0,03с

(Отредактировано автором: 13 Января, 2014 - 13:08:48)

 
 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