for ($x = 0; $x < $x_dest; $x++) { for ($y=0; $y < $y_dest; $y++) { $rgb2 = ImageColorAt($im2, $x+$x_dec, $y+$y_dec); $a2 = ($rgb2 >> 24) & 0xFF; $r2 = ($rgb2 >> 16) & 0xFF; $g2 = ($rgb2 >> 8) & 0xFF; $b2 = $rgb2 & 0xFF; $g2 = ($r2+$g2+$b2)/3; $val = ($g2-127)/127; $xd = $x - ($val*$h); $yd = $y + ($val*$v); $xd = max(0,$xd); $yd = max(0,$yd); if ($xd > $x_dest - $x_dec - 1) $xd = $x_dest - $x_dec - 1; if ($yd > $y_dest - $y_dec - 1) $yd = $y_dest - $y_dec - 1; $rgb = ImageColorAt($im, $xd+$x_dec, $yd+$y_dec); $a = ($rgb >> 24) & 0xFF; $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $color = ImageColorAllocateAlpha( $im_, $r, $g, $b, $a ); imagesetpixel ($im_, $x, $y, $color); } }