0
php函数imagecropauto()
可以自动裁剪图像。如何获得autocrops偏移量和大小?
我想它会做一些计算,并将偏移量和大小作为参数发送到imagecrop()
函数。
我可以从返回的图像中得到的尺寸值,但有一些方法可以获得偏移值吗?
php函数imagecropauto()
可以自动裁剪图像。如何获得autocrops偏移量和大小?
我想它会做一些计算,并将偏移量和大小作为参数发送到imagecrop()
函数。
我可以从返回的图像中得到的尺寸值,但有一些方法可以获得偏移值吗?
这是一个丑陋的解决方案,通过交换botom右角的颜色。
有没有更简单的方法?
function autocrop_range($image)
{
$org_size = array(imagesx($image), imagesy($image));
$croped = imagecropauto($image, IMG_CROP_SIDES);
if(!$croped)
{
return FALSE;
}
$croped_size = array(imagesx($croped), imagesy($croped));
if($org_size == $croped_size)
{
return FALSE;
}
imagedestroy($croped);
$copy = imagecrop($image, array('x' => 0, 'y' => 0, 'width' => $org_size[0], 'height' => $org_size[1]));
$corner_color = imagecolorat($copy, $org_size[0] - 1, $org_size[1] - 1);
$r = ($corner_color >> 16) & 0xFF;
$g = ($corner_color >> 8) & 0xFF;
$b = ($corner_color) & 0xFF;
$other_color = imagecolorallocate($copy, $r^0x80, $r^0x80, $r^0x80);
imagesetpixel($copy, $org_size[0] - 1, $org_size[1] - 1, $other_color); // force botom to stay uncroped
imagesetpixel($copy, $org_size[0] - 1, $org_size[1] - 2, $other_color); // force right to stay uncroped
$corner_croped = imagecropauto($copy, IMG_CROP_SIDES);
imagedestroy($copy);
$corner_croped_size = array(imagesx($corner_croped), imagesy($corner_croped));
imagedestroy($corner_croped);
return array('x' => ($org_size[0] - $corner_croped_size[0]), 'y' => ($org_size[1] - $corner_croped_size[1]), 'width' => $croped_size[0], 'height' => $croped_size[1]);
}
怎么我结束了'$ croped_size [0]> $ corner_croped_size [0]'和'$ croped_size [1]> $ corner_croped_size [1]'?图像:(http://www.pcper.com/files/imagecache/article_max_width/review/2012-11-10/85_PCPerSilverPNG-300.png) –