imagecrop()
(PHP 5 >= 5.5.0, PHP 7)
Crop an image to the given rectangle
说明
imagecrop(resource $image,array $rect): resource
Crops an image to the given rectangular area and returns the resulting image. The given$imageis not modified.
参数
- $image
由图象创建函数(例如imagecreatetruecolor())返回的图象资源。
- $rect
The cropping rectangle as array with keysx,y,widthandheight.
返回值
Return cropped image resource on success 或者在失败时返回FALSE
.
范例
imagecrop() example
This example shows how to crop an image to a square area.
<?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'); imagedestroy($im2); } imagedestroy($im); ?>
参见
imagecropauto()
Crop an image automatically using one of the available modes
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)
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 ); ?>
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);