+1.00
Рейтинг
0.00
Сила

Vova Kuchkovskiy

Как обрезать фото квадратом на PHP?

Вот так на GD2 например:

function createsquarethumbnail($filetype, $origfile, $thumbfile, $new_size) {
        $compression
= "gd2";
       
if ($filetype == 1) { $origimage = imagecreatefromgif($origfile); }
        elseif
($filetype == 2) { $origimage = imagecreatefromjpeg($origfile); }
        elseif
($filetype == 3) { $origimage = imagecreatefrompng($origfile); }

        $old_x
= imagesx($origimage);
        $old_y
= imagesy($origimage);

        $x
= 0; $y = 0;

       
if ($old_x > $old_y) {
                $x
= ceil(($old_x - $old_y) / 2);
                $old_x
= $old_y;
       
} elseif ($old_y > $old_x) {
                $y
= ceil(($old_y - $old_x) / 2);
                $old_y
= $old_x;
       
}
        $new_image
= imagecreatetruecolor($new_size,$new_size);
       
if ($filetype == 3 && $compression != "gd1") {
                imagealphablending
($new_image, false);
                imagesavealpha
($new_image, true);
       
}
        imagecopyresampled
($new_image,$origimage,0,0,$x,$y,$new_size,$new_size,$old_x,$old_y);

       
if ($filetype == 1) { imagegif($new_image,$thumbfile,100); }
        elseif
($filetype == 2) { imagejpeg($new_image,$thumbfile,100); }
        elseif
($filetype == 3) { imagepng($new_image,$thumbfile,5); }

        imagedestroy
($origimage);
        imagedestroy
($new_image);
}


Пример:

createsquarethumbnail(3, getcwd()."/photo.png", getcwd()."/photo_box.png", 150);
для PNG например.

Если надо на ImageMagick пишите в комментариях. Прочту сделаю.