@m5xim

Почему rgb не дает точных значений?

Работаю с изображением через php gd.
$original = imagecreatefromjpeg($img_src);
$im = imagecreatetruecolor(imagesx($original), imagesy($original));
for ($x = 0; $x < imagesx($original); $x++)
{
    for ($y = 0; $y < imagesy($original); $y++)
    {
        $rgb = imagecolorat($original, $x, $y);
        $r = ($rgb >> 16) & 0xFF;
        $g = ($rgb >> 8) & 0xFF;
        $b = $rgb & 0xFF;
  
        echo "<p>".$r."/".$g."/".$b."/"."</p>";

        $r = $x;
        $g = $y;
        $b = $x+$y;

        echo "<p>".$r."/".$g."/".$b."/"."</p>";
        echo "<hr>";

         $color = imagecolorallocate($im, $r, $g, $b);

        imagesetpixel($im, $x, $y, $color);
    }
}

Для примера создается пустое изображение размером с экземпляр, и заполняется тестовыми rgb цветом.Так вот,после работы данного скрипта,снова получаю rgb каждого пикселя и они отличаются от установленных. Ожидается 0/0/0,0/1/1,0/2/2... а получаю 0/2/1,0/2/1,1/3/2... Причем дело не только в тестовых значениях: даже если просто таким алгоритмом скопировать картинку, выделяя rgb , создавая цвет и записывая в новое изображение, будет такая же самая ситуация.57/83/48,61/82/49,61/76/45 после копии читаются как 58/82/48,64/83/51,64/77/47 . Возможно ли каким-то образом записывать/читать rgb без погрешностей? При этом выделение rgb принципиально, т.к. далее с ним будет производится работа и изменение значений.
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ivanq
@Ivanq
Знаю php, js, html, css
Скорее всего, у вас JPEG -> сжатие с потерями -> неправильный (неточный) цвет. Используйте PNG.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы