PHP.SU

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

Страниц (5): « 1 2 3 4 [5]

> Найдено сообщений: 73
TroL Отправлено: 05 Апреля, 2013 - 05:25:15 • Тема: tiff To jpeg (гугл курит) • Форум: Графика в PHP

Ответов: 15
Просмотров: 7038
Подскажите каким простым действием можно проверить работоспособность imagemagic?
TroL Отправлено: 04 Апреля, 2013 - 10:57:02 • Тема: tiff To jpeg (гугл курит) • Форум: Графика в PHP

Ответов: 15
Просмотров: 7038
спасибо, наверняка это все таки из-за imagemagic. на днях попробую и отпишусь
TroL Отправлено: 04 Апреля, 2013 - 05:26:57 • Тема: tiff To jpeg (гугл курит) • Форум: Графика в PHP

Ответов: 15
Просмотров: 7038
Заешь если бы я смог бы написать то я бы не лез бы на форум, на форуме я пишу только тогда когда уже ничего не остается как спросить совет и пример кода у специалистов!

Может быть причина в денвере?
(Добавление)
Ести такая вот функция

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (array_key_exists('file', $_REQUEST)) {
  3.     $image = exif_thumbnail($_REQUEST['file'], $width, $height, $type);
  4. } else {
  5.     $image = false;
  6. }
  7. if ($image!==false) {
  8.     header('Content-type: ' .image_type_to_mime_type($type));
  9.     echo $image;
  10.     exit;
  11. } else {
  12.     // no thumbnail available, handle the error here
  13.     echo 'No thumbnail available';
  14. }
  15. ?>


$type - что писчать в эту переменнцю не понятно
TroL Отправлено: 03 Апреля, 2013 - 13:08:42 • Тема: tiff To jpeg (гугл курит) • Форум: Графика в PHP

Ответов: 15
Просмотров: 7038
блин давай я тебе начну накидывать примеры?! только что их кидать если не работают!
У меня по идее даже эта команда выдает ошибку exif_thumbnail(ФАЙЛ)
TroL Отправлено: 03 Апреля, 2013 - 12:37:09 • Тема: определить цвет всех пикселей картинки • Форум: Графика в PHP

Ответов: 2
Просмотров: 4822
Вот мой старый пример, реализует вот что...
берет картинку, проганяет по всем пикселям и считывает цвет.
сокращает количество отенков из 16 000 000 до 4 000
потом подсчитывает количество тех или иных цветов, и берет 8 самых популярных цветов, потом обеденяем в строку и записываем в бд
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.     $img = ПУТЬ К КАРТИНКИ;
  4.     $color = color_index($img);
  5.     $color=implode(';',$color);//Объеденим массив в строку
  6.  
  7. $query = "UPDATE `catalog_photo` SET
  8. `color` = '$color'
  9.    WHERE `id` = $row[id] LIMIT 1";
  10. mysql_query($query);
  11.  
  12. function color_index($source_src,$index_colors=8)//индексирование цветов картинки
  13. {
  14.    
  15. $size = getimagesize($source_src);//размеры картинки
  16.  
  17. $image_type=file_ext($source_src);//расширение файла изображения, ничего сложного
  18. echo $image_type;
  19. switch ($image_type)//загнали img в дескриптор, для каждого типа файла своя ф-ия
  20. {
  21. case 'gif': $source = @imagecreatefromgif($source_src); break;
  22. default:case 'jpg': $source = @imagecreatefromjpeg($source_src); break;
  23. case 'png': $source = @imagecreatefrompng($source_src); break;
  24. }
  25.  
  26.  
  27. $INDEX=array();
  28. $I=array();
  29.  
  30. $b = 1;
  31. $size1 = $size[1]*2;
  32. $size2 = $size1+50;
  33. $size0 = $size[0]*2;
  34.  
  35.  
  36. for($y=0;$y<=$size[1]-1;$y++)//перебираем точки картинки по x
  37. {
  38.  
  39.  
  40. for($x=0;$x<=$size[0]-1;$x++)//перебираем точки картинки по y
  41. {
  42.  
  43.  
  44.  
  45. $color=ImageColorAt($source, $x, $y);//берем цвет в точке n
  46. $rgb_arr_0=imagecolorsforindex($source, $color);//переводим цвет в rgb
  47. $rgb_arr[0]=$rgb_arr_0['red'];
  48. $rgb_arr[1]=$rgb_arr_0['green'];
  49. $rgb_arr[2]=$rgb_arr_0['blue'];
  50. $I[$color]++;
  51.  
  52. $INDEX[$color]=rgb2hex2rgb(implode('.',$rgb_arr));//rgb в hex, заносим все данные для последующего построения рейтинга
  53. //$rgb = "($rgb_arr[0], $rgb_arr[1], $rgb_arr[2])";
  54. //$newColor = newColorMask($INDEX[$color]);
  55. //var_dump($newColor);
  56. $b++;
  57.  
  58. }
  59. $ngb = 0;
  60.  
  61. }
  62.  
  63.  
  64.  
  65. $out_0=array();
  66. $out=array();
  67. $outer = array();
  68.  
  69. foreach($INDEX as $key=>$color_hex){//перебираем все полученые цвета, представим как номер цвета php GD в палитре изображения => цвет в hex
  70. $out_0[$I[$key]][]=$color_hex;//для каждого цвета создадим суб-массив, в него запишем инкриментом количество вхождений данного цвета sizeof($out_0[$I[$key]])= к-во н-ого цвета в массиве цветов
  71. #echo $color_hex.' => '.$I[$key].'
  72. //как бы такой массив
  73. }
  74.  
  75. foreach($out_0 as $incolor){//переберем все hex суб-массивы в обратном порядке, обеденим многомерный массив в одномерный
  76.     rsort($incolor);
  77.     $out[]=implode(',',$incolor);
  78. }
  79.  
  80. $out=implode(',',$out);//Объеденим массив в строку
  81. $out=explode(',',$out);//разобем строку в массив
  82. //две предыдущие операции - гарантия получения одномерного массива
  83. $out_0=array();
  84. //var_dump($out);
  85.  
  86. $maskcolor = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
  87. $maskcolor2 = array("0", "4", "8",  "C");
  88.  
  89.  
  90. foreach ($out as $key => $out_mask){
  91.     $out_mask =  substr($out_mask, 1);
  92.     $outearr = str_split($out_mask, 1);
  93.  
  94. $keyw = array_search($outearr[0], $maskcolor)+1;
  95. $outkey[0] = ceil($keyw/4)-1;
  96. $outval[0] =  $maskcolor2[$outkey[0]];
  97. $outval[1] =  $outval[0];
  98.  
  99. $keyw = array_search($outearr[2], $maskcolor)+1;
  100. $outkey[2] = ceil($keyw/4)-1;
  101. $outval[2] =  $maskcolor2[$outkey[2]];
  102. $outval[3] =  $outval[2];
  103.  
  104. $keyw = array_search($outearr[4], $maskcolor)+1;
  105. $outkey[4] = ceil($keyw/4)-1;
  106. $outval[4] =  $maskcolor2[$outkey[4]];
  107. $outval[5] =  $outval[4];
  108.  
  109. $outvalue[$key] = '#'.$outval[0].$outval[1].$outval[2].$outval[3].$outval[4].$outval[5];
  110.  
  111.    /* $outearr[1] = $outearr[0];
  112.     $outearr[3] = $outearr[2];
  113.     $outearr[5] = $outearr[4];
  114.  
  115. $new_out[$key] = "#".$outearr[0].$outearr[1].$outearr[2].$outearr[3].$outearr[4].$outearr[5];*/
  116.  
  117. }
  118.  
  119.  
  120. $out = $outvalue;
  121. $outcount = array_count_values($out);
  122. arsort($outcount);
  123. reset($outcount);
  124. while (list($key, $val) = each($outcount)) {
  125.    $outers[] = $key;
  126.    $outersval[] = $val;
  127. }
  128.  
  129.  
  130. for($i=sizeof($outers);$i>sizeof($outers)-$index_colors;$i--)//получим $out_0[0]=hex с max числом вхождений, т.е. самый частовстречающийся цвет по рейтингу
  131. {
  132.     $out_0[]=$outer[$i];
  133. }
  134. $outs = array_chunk($outers, $index_colors);
  135. $outsval = array_chunk($outersval, $index_colors);
  136. /*
  137. foreach ($outs[0] as $key=>$outer) {
  138.  
  139.     echo "<div style='float:left; width:105px; height:20px; margin:5px; background-color:".$outer."'>".$outer."-".$outersval[$key]."</div>";
  140. }*/
  141. //
  142.  
  143.  
  144. return $outs[0];//вернули массив наиболее частовстречающихся цветов по рейтингу, где $out_0[0] = наиболее частый
  145. }
  146.  
  147.  
  148.  
  149.  
  150. function newColorMask($out_mask){
  151. $maskcolor = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
  152. $maskcolor2 = array("0", "4", "8", "C");
  153.  
  154. $out_mask =  substr($out_mask, 1);
  155. $outearr = str_split($out_mask, 1);
  156.  
  157.  
  158. $keyw = array_search($outearr[0], $maskcolor)+1;
  159. $outkey[0] = ceil($keyw/4)-1;
  160. $outval[0] =  $maskcolor2[$outkey[0]];
  161. $outval[1] =  $outval[0];
  162.  
  163. $keyw = array_search($outearr[2], $maskcolor)+1;
  164. $outkey[2] = ceil($keyw/4)-1;
  165. $outval[2] =  $maskcolor2[$outkey[2]];
  166. $outval[3] =  $outval[2];
  167.  
  168. $keyw = array_search($outearr[4], $maskcolor)+1;
  169. $outkey[4] = ceil($keyw/4)-1;
  170. $outval[4] =  $maskcolor2[$outkey[4]];
  171. $outval[5] =  $outval[4];
  172.  
  173.  
  174. $outvalue = '#'.$outval[0].$outval[1].$outval[2].$outval[3].$outval[4].$outval[5];
  175.  
  176. //$new_out = "#".$outearr[0].$outearr[1].$outearr[2].$outearr[3].$outearr[4].$outearr[5];
  177. //$new_out1 = "#".$outearr[0].$outearr[0].$outearr[2].$outearr[2].$outearr[4].$outearr[4];
  178.  
  179. return $outvalue;
  180. }
  181.  
  182.  
  183.  
  184. function file_ext($file)//на входе - имя файла (можно с путями),возвращает расширение файла изображения
  185. {
  186.     $image_type_arr=explode("/",$file);
  187. $image_type_arr=explode(".",$image_type_arr[sizeof($image_type_arr)-1]);
  188. return strtolower((strlen($image_type_arr[1])>3)?'jpg':$image_type_arr[1]);
  189. }
  190.  
  191.  
  192. function rgb2hex2rgb($c)//конверт rgb->hex->rgb
  193. {
  194. if(!$c) return false;
  195. $c = trim($c);
  196. $out = false;
  197. if(preg_match("/^[0-9ABCDEFabcdef\#]+$/i", $c)){
  198. $c = str_replace('#','', $c);
  199. $l = strlen($c) == 3 ? 1 : (strlen($c) == 6 ? 2 : false);
  200.  
  201. if($l){
  202. unset($out);
  203. $out[0] = $out['r'] = $out['red'] = hexdec(substr($c, 0,1*$l));
  204. $out[1] = $out['g'] = $out['green'] = hexdec(substr($c, 1*$l,1*$l));
  205. $out[2] = $out['b'] = $out['blue'] = hexdec(substr($c, 2*$l,1*$l));
  206. }else $out = false;
  207.  
  208. }elseif (preg_match("/^[0-9]+(,| |.)+[0-9]+(,| |.)+[0-9]+$/i", $c)){
  209. $spr = str_replace(array(',',' ','.'), ':', $c);
  210. $e = explode(":", $spr);
  211. if(count($e) != 3) return false;
  212. $out = '#';
  213. for($i = 0; $i<3; $i++)
  214. $e[$i] = dechex(($e[$i] <= 0)?0:(($e[$i] >= 255)?255:$e[$i]));
  215.  
  216. for($i = 0; $i<3; $i++)
  217. $out .= ((strlen($e[$i]) < 2)?'0':'').$e[$i];
  218.  
  219. $out = strtoupper($out);
  220. }else $out = false;
  221.  
  222. return $out;
  223. }
TroL Отправлено: 03 Апреля, 2013 - 12:29:39 • Тема: tiff To jpeg (гугл курит) • Форум: Графика в PHP

Ответов: 15
Просмотров: 7038
Мне надо перевести изображение формата tif в jpg, В гугле покопался ничего не нашел из того что работает
TroL Отправлено: 29 Ноября, 2012 - 10:54:46 • Тема: шифрование строки • Форум: Напишите за меня, пожалуйста

Ответов: 4
Просмотров: 54
strlen($md ); показывает длину строки, а дальше через условие проверяешь
TroL Отправлено: 29 Ноября, 2012 - 09:37:01 • Тема: только начал работать с jquery. подскажите • Форум: Вопросы новичков

Ответов: 8
Просмотров: 238
попробуй jquery заменить на $, ошибки вроде как нет
TroL Отправлено: 29 Ноября, 2012 - 08:56:02 • Тема: объеденение оттенков цвета • Форум: HTTP и PHP

Ответов: 7
Просмотров: 2326
Тема еще актуальна, ищу еще способы
TroL Отправлено: 29 Ноября, 2012 - 06:20:09 • Тема: объеденение оттенков цвета • Форум: HTTP и PHP

Ответов: 7
Просмотров: 2326
sKaa пишет:
var_dump(hex2rgb('#F0D')); // array(3) { [0]=> int(255) [1]=> int(0) [2]=> int(221) }
TroL, Я просто предложил как ещё один вариант куда можно копать. Сразу же предупредил, что может это глупость всё) Прошу прощения, что не смог помочь, ждите гуру, может они вам что-то подскажут.


Все равно спасибо, буду думать что да как
(Добавление)
Удалось сократить до 512 оттенков путем перевода в восьмеричную кодировку по своему алгоритму)
TroL Отправлено: 29 Ноября, 2012 - 06:14:32 • Тема: объеденение оттенков цвета • Форум: HTTP и PHP

Ответов: 7
Просмотров: 2326
а ты понимаешь что в таком виде столько же комбинаций ~17млн?!
Я на оборот специально перевел в hex так как там всего лишь 16 символов, а цвет можно обрабатывать по трем символам не #FFCC66 а #FC6

так что этот вариант не подойдет((
TroL Отправлено: 29 Ноября, 2012 - 05:56:21 • Тема: объеденение оттенков цвета • Форум: HTTP и PHP

Ответов: 7
Просмотров: 2326
решил попробовать так:
беру первый третий и пятый символ
каждый символ прогоняю по массиву
$maskcolor = array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
нахожу ключ в массиве (предварительно визуально разделив массив на 4части по 4 символа)
узнаю в какой части находится то символ и получаю остальные символы из этой части

и так с каждым из трех символов

для цвета #FFFFFF получаю массив вида
array(4) { [0]=> string(1) "C" [1]=> string(1) "D" [2]=> string(1) "E" [3]=> string(1) "F" }
array(4) { [0]=> string(1) "C" [1]=> string(1) "D" [2]=> string(1) "E" [3]=> string(1) "F" }
array(4) { [0]=> string(1) "C" [1]=> string(1) "D" [2]=> string(1) "E" [3]=> string(1) "F" }

как сделать что бы оттенки вида CCFFDD, CCCCCC, EEFFCC и другие попадали в один массив, то есть как то приравнивались к FFFFFF
(Добавление)
sKaa пишет:
Может я сейчас скажу глупость, но переведите ваш hex ту rgb и там явно укажите "оттенки"
120 120 120

каким способом это можно сделать?
TroL Отправлено: 29 Ноября, 2012 - 05:47:44 • Тема: объеденение оттенков цвета • Форум: HTTP и PHP

Ответов: 7
Просмотров: 2326
Здравствуйте, кто ни будь делал фильтр по цвету для загруженных фотографий? А вот мне пришлось...
Все сделал, все работает.

Да же сократил оттенки с ~17млн до ~4тыс но этого все равно много.

Помогите решить эту проблему и сократить количество оттенков до ~100

опишу ситуацию как вы знаете шестнадцатеричная кодировка цвета это типа #abf123 - таких может быть (если я правильно посчитал) 16^6 = 16 777 216 оттенков.

Их я сократил путем #aaff22. То есть строку разделил на три части (ab f1 23) из двух символов и второй символ переписал на первый. получилось 16^3 = 4096 оттенков. Тоесть #6699EE и #77AAFF цвета похожи но оттенки разные, как их можно объедение?

если надо код могу скинуть

Страниц (5): « 1 2 3 4 [5]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB