imagecropauto

(PHP 5 >= 5.5.0)

imagecropautoCrop an image automatically using one of the available modes

Description

resource imagecropauto ( resource $image [, int $mode = -1 [, float $threshold = .5 [, int $color = -1 ]]] )

Warning

This function is currently not documented; only its argument list is available.

Parameters

image

An image resource, returned by one of the image creation functions, such as imagecreatetruecolor().

mode

One of IMG_CROP_* constants.

threshold

Used in IMG_CROP_THRESHOLD mode.

color

Used in IMG_CROP_THRESHOLD mode.

Return Values

Return cropped image resource on success or FALSE on failure.

Коментарии

Автор:
In some cases the use of the IMG_CROP_WHITE or IMG_CROP_BLACK does not work. The function returns FALSE. It is best to use the IMG_CROP_THRESHOLD mode and specify the color in fourth argument as in the example below :

<?php

$original_img 
imagecreatefromjpeg($image_path);

// Use this :
$cropped_img_white imagecropauto($original_img IMG_CROP_THRESHOLDnull16777215);
// Rather than :
$cropped_img_white imagecropauto($original_img IMG_CROP_WHITE);

// AND

// Use this :
$cropped_img_black imagecropauto($original_img IMG_CROP_THRESHOLDnull0);
// Rather than :
$cropped_img_black imagecropauto($original_img IMG_CROP_BLACK);

?>
2016-07-19 02:49:10
http://php5.kiev.ua/manual/ru/function.imagecropauto.html
I don’t know why you can’t set the threshold for the four sides filter (IMG_CROP_SIDES) so here’s how to do it manually using the IMG_CROP_THRESHOLD filter instead.

$threshold = .5;

$im = imagecreatefromjpeg('somefile.jpg');

$width = imagesx($im);
$height = imagesy($im);

$arr = [
    [0,0],
    [$width-1,0],
    [0,$height-1],
    [$width-1,$height-1],
];

$red = 0;
$green = 0;
$blue = 0;

// grab the colours from all four corners
foreach( $arr as $arr2 ) {
    $thisColor = imagecolorat($im, $arr2[0], $arr2[1]); 

    $rgb = imagecolorsforindex($im, $thisColor); 
    $red += round(round(($rgb['red'] / 0x33)) * 0x33); 
    $green += round(round(($rgb['green'] / 0x33)) * 0x33); 
    $blue += round(round(($rgb['blue'] / 0x33)) * 0x33); 
}

// and average them
$red /= 4;
$green /= 4;
$blue /= 4;

$newColor = imagecolorallocate($im, $red, $green, $blue);           

$cropped = imagecropauto($im, IMG_CROP_THRESHOLD, $threshold, $newColor);

imagejpg($cropped, 'somefile.cropped.jpg');

imagedestroy($im);
imagedestroy($cropped);
2022-04-06 21:21:40
http://php5.kiev.ua/manual/ru/function.imagecropauto.html

    Поддержать сайт на родительском проекте КГБ