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);