Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поставить точку! 
:(
    Опции темы
Grig
Дата 21.12.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Здравствуйте!
вот столкнулся с такой проблемкой
Загружаю рисунок Jpeg
в планах поставить точку в верхнем левом углу и сохранить его в другом жипеговском файле.
Код

$im = imagecreatefromjpeg("1.jpg");
$rgb = ImageColorAt($im, 100, 100);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
print $r.'+'.$g.'+'.$b.'<br>';

imagerectangle ( $im, 0, 0, 1, 1, 0xFFFFFF );
imagejpeg ( $im , 'q.jpg');


$im = imagecreatefromjpeg("q.jpg");
$rgb = ImageColorAt($im, 0, 0);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
print $r.'+'.$g.'+'.$b;


однако, возвращаемый результат не выдает мне 255+255+255,
а выдает 255+250+248
 smile 
Думаю это из-за качества сохранения изображения.
Подскажите как исправить? Очень нужно точно..

Попутно может кто подскажет как 0xFFFFFF разложить в RGB (ну то есть в три числовых значения smile ), и наоборот?


Это сообщение отредактировал(а) Grig - 21.12.2006, 14:30


--------------------
        
PM MAIL ICQ   Вверх
Mal Hack
Дата 21.12.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Grig @  21.12.2006,  14:28 Найти цитируемый пост)
Попутно может кто подскажет как 0xFFFFFF разложить в RGB (ну то есть в три числовых значения smile ), и наоборот?

Нашел все-таки в "закромах"...
Код
<?php

$hex = "#";
$rgb = "255,120,255";

$arr = explode( "," , $rgb );

for( $i = 0 ; $i < 3 ; $i++ )
 {  $hex .= sprintf( "%x" , $arr[ $i ] );  }

print $hex;

?>
<br>
<?php

$hex = "#ffFFff";
$rgb = "";

for( $i = 0 ; $i < 3 ; $i++ )
 {  $arr[$i] = substr( $hex , 1 * ( $i + 1 ) , 2 );  }

 $rgb .= hexdec( $arr[ 0 ] ) . "," . hexdec( $arr[ 1 ] ) . "," . hexdec( $arr[ 2 ] );

print "rgb( " . $rgb . " )";

?>
<?php

/*
$hex = "#FFAACC";

function toRGB($h) {
  $h=($h{0}=="#")? substr($h, 1): $h;
  $rgb=str_split($h, 2); //делим на строки по 2 символа
  $fltr = create_function('$v', 'return intval($v,16);'); //из 16ричной
  array_map($fltr, $rgb); //конвертируем строки в числа
  return implode(",", $rgb); //возвращаем через запятую
}
 print hexdec( "FF" );

 */
?>



Мне кажется, что ты с координатами намудрил...

PM ICQ   Вверх
Grig
Дата 27.12.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: нет
Всего: 16



Mal Hack, спасибо! Решение пригодится!
А свою проблемку решил таким образом:
Код

<?php
$im = imagecreatefromjpeg("cert.jpg");
$rgb = ImageColorAt($im, 0, 0);
print $rgb.'<br>';
$t=rand(0,16777215);
imagerectangle ( $im, 0, 0, 1, 1, $t );
imagejpeg ( $im , 'qq.jpg');
$im = imagecreatefromjpeg("qq.jpg");
$rgb = ImageColorAt($im, 0, 0);
print $rgb.'<br>';
print '
<table border=1 bgcolor="#'.dechex($rgb).'">
<tr>
<td>jn</td>
</tr>
</table>
';
?>

Обошелся без заморок с шеснадцетиричной системой.
Ну это вдруг кому понадобится.


--------------------
        
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.2310 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.