Библиотека GD: Обрезка изображения круга из центра

#php #gdlib

Вопрос:

я использую этот скрипт для обрезки изображения круга, результат в порядке, но он обрезан сверху слева. Как обрезать его из центра изображения? Спасибо!

 <?php
// convert the picture
    $w = 640;  $h=640; // original size
    $img_path="images/test.jpg";
    $save_path="images/temp/test.png";
    $src = imagecreatefromstring(file_get_contents($img_path));
    $newpic = imagecreatetruecolor($w,$h);
    imagealphablending($newpic,false);
    $transparent = imagecolorallocatealpha($newpic, 0, 0, 0, 127);
    $r=$w/2;
    for($x=0;$x<$w;$x  )
        for($y=0;$y<$h;$y  ){
            $c = imagecolorat($src,$x,$y);
            $_x = $x - $w/2;
            $_y = $y - $h/2;
            if((($_x*$_x)   ($_y*$_y)) < ($r*$r)){
                imagesetpixel($newpic,$x,$y,$c);
            }else{
                imagesetpixel($newpic,$x,$y,$transparent);
            }
        }
    imagesavealpha($newpic, true);
    imagepng($newpic, $save_path);
    imagedestroy($newpic);
    imagedestroy($src);

?>