Mam taki mały problem. Robię sobie obrazek, na którym umieszczam tekst a następnie chce go zmodyfikować pixel po pixelu. Skrócony kod poniżej
header("Content-type: image/png"); // 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;
$move = ($move + 1
) % count($moveArray); }
// 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?