imagecrop

(PHP 5 >= 5.5.0, PHP 7)

imagecrop指定した矩形に画像をクロップする

説明

resource imagecrop ( resource $image , array $rect )

画像を指定した矩形範囲にクロップして、クロップ後の画像を返します。 パラメータ image で渡した画像には何も手を加えません。

パラメータ

image

imagecreatetruecolor() のような画像作成関数が返す画像リソース。

rect

クロップする矩形を配列で指定します。配列のキーには x, y, width, height を指定します。

返り値

成功した場合にクロップ後の画像リソースを返します。失敗した場合に FALSE を返します。

例1 imagecrop() の例

この例は、画像を正方形にクロップする方法を示すものです。

<?php
$im 
imagecreatefrompng('example.png');
$size min(imagesx($im), imagesy($im));
$im2 imagecrop($im, ['x' => 0'y' => 0'width' => $size'height' => $size]);
if (
$im2 !== FALSE) {
    
imagepng($im2'example-cropped.png');
}
?>

参考

  • imagecropauto() - 利用可能なモードを指定して、画像を自動的にクロップする
add a note add a note

User Contributed Notes 3 notes

up
7
robert at woodst dot com
1 year ago
It appears that imagecrop() will output a black line along the bottom the resulting image until version 5.6.12. Your only choices are to upgrade PHP or use imagecopyresampled().

http://php.net/ChangeLog-5.php#5.6.12 (bug #67447)
up
0
shaun at slickdesign dot com dot au
15 days ago
Use imagecopyresampled to crop your image instead, and it should work correctly in PHP 5.5+ without any black lines.

<?php
// Desired function call.
$cropped = imagecrop( $image, array( 'x' => $x, 'y' => $y, 'width' => $width, 'height' => $height ) );

// Equivalent function which works in both PHP pre 5.6.12 and 5.6.12+.
$cropped = imagecreatetruecolor( $width, $height );
imagecopyresampled( $cropped, $image, 0, 0, $x, $y, $width, $height, $width, $height );
?>
up
0
vanadragos at yahoo dot com
1 month ago
To get the center crop of a image in php:

           
$new = imagecreatefromjpeg($uploadedfile);

    $crop_width = imagesx($new);
    $crop_height = imagesy($new);
               
            $size = min($crop_width, $crop_height);
           
           
            if($crop_width >= $crop_height) {
            $newx= ($crop_width-$crop_height)/2;
           
            $im2 = imagecrop($new, ['x' => $newx, 'y' => 0, 'width' => $size, 'height' => $size]);
            }
            else {
                $newy= ($crop_height-$crop_width)/2;
           
                $im2 = imagecrop($new, ['x' => 0, 'y' => $newy, 'width' => $size, 'height' => $size]);
                }
           
               
    imagejpeg($im2,$filename,90);
To Top