• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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);