// Tworze obrazek o rozmiarach $w, $h $im = imagecreate( $w, $h ); // Tło robię białe $bgColor = imagecolorallocate( $im, 255, 255, 255 ); imagefill( $im, 0, 0, $bgColor ); // Czarnym kolorem korzystając z czcionki ($font) wpisuje tekst ($code) z uwzględnieniem wcześniej obliczonych parametrów // (obliczenia dla $fontSize, $angle, $ww, $hh pominąłem gdyż dla problemu nie są istotne ); // Tekst pojawia się tam gdzie powinien i tak jak powienien - tutaj jeszcze wszystko działa; $txtColor = imagecolorallocate( $im, 0, 0, 0 ); imagettftext( $im, $fontSize, $angle, $ww, $hh, $txtColor, $font, $code ); // Problem zaczyna się tutaj gdy chce pokombinować z pikselami for( $y = 0; $y < $hs; ++$y ) { // $movaArray[$move] - o tyle pikseli chcę daną "linijkę" przesunąć w lewo - nie istotne dla problemu - to raczej działa; for( $x = $movaArray[$move]; $x < $w; ++$x ) { $rgb = imagecolorat( $im, $x, $y ); /*/ // wersja 1 $arr = imagecolorsforindex( $im, $rgb ); /*/ // wersja 2 'red' => ($rgb >> 16) & 0xFF, 'green' => ($rgb >> 8) & 0xFF, 'blue' => $rgb & 0xFF ); /**/ // Funkcja getIndex oblicza mi index danego pixela - szerokość obrazka * $y + $x - działa bez zarzutów; imagecolorset( $im, getIndex($im, $x-$move, $y), $rgb['red'], $rgb['green'], $rgb['blue'] ); } // Dla każdej linii przesunięcie jest inne; } // no i na koniec wyświetlam obrazek imagepng($im); imagedestroy($im);
i niby wszystko w kodzie wygląda ok ale jako rezultat dostaje cały czarny obrazek (nie zależnie od tego czy jest wersja 1 czy 2 kodu) i nie mam pojęcia dla czego - niby wszystko zgodnie z manualem. Ktoś ma jakiś pomysł? Gdzie zrobiłem błąd?