проблема

  • Автор темы Автор темы Guest
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
<!--QuoteBegin-Jkar+20:09:2005, 22:37 -->
<span class="vbquote">(Jkar @ 20:09:2005, 22:37 )</span><!--QuoteEBegin-->get'ом
[snapback]25002" rel="nofollow" target="_blank[/snapback]​
[/quote]

OK.. Попробую...
 
В принципе всё работает..

Если бы не одно большое НО...

Условие задания такое, что мне нужно прочитать содержимое bmp-файла "как положено", т.е. открыть файл и, считывая побайтно, попиксельно выводить на экран изображение..

Только все графические функции в PHP работают с тройками RGB... А в BMP-файле информация по цветам хранится в каждом байте в виде индексированных значений от 0 до 255, где каждое число - это свой цвет.. Сначала вопрос стоял о конвертации "индексированное значение -> RGB-тройка".. Потом я нашёл вот такую функцию:

array imagecolorsforindex ( resource image, int index); - Возвращает ассоциативный массив с ключами red, green и blue, содержащими соответствующие значения для специфицированного индекса цвета.

Всё бы хорошо, но я столкнулся с следующей тупкой:

Код:
<?php
$im = imagecreatefromgif("*цензура*.gif");
$color_index = imagecolorat($im, 80,20);
$rgb = imagecolorsforindex($im, $color_index); //даже если вместо $color_index подставить произвольное число [0..255] - всё нормально работает
...   
$color = ImageColorAllocate($im, $rgb["red"], $rgb["green"],$rgb["blue"]);
...
ImagePng($im);
ImageDestroy($im);
?>

- этот код работает без проблем..

А вот этот
Код:
<?php
$im = imagecreate(400, 400); //////////////////////////////////////////////////
$str = join('', file($_GET['name']));
...
$rgb = imagecolorsforindex($im, $str[$j]); 
...   
$color = ImageColorAllocate($im, $rgb["red"], $rgb["green"],$rgb["blue"]);
...
ImagePng($im);
ImageDestroy($im);
?>

- ни в какую..:

Код:
Warning: imagecolorsforindex(): Color index 45 out of range in z:\home\localhost\www\my\drawing2.php on line 12

Подскажите, plz, в чём моя ошибка? Или может можно конвертацию по-другому как-нить замутить?
 
...т.е. при $j = 1..255 - выводится предупреждение -

..Придупреждения нет только при $j = 0...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!