使用PHP(GD)进行图像裁剪

时间:2014-04-19 11:44:20

标签: php gd thumbnails crop

我有下面的图像,我想裁剪,所以所有黑色区域都被删除,拇指返回。 拇指必须是130px(宽度)乘155px(高度)。

thumb

如何使用PHP的GD库裁剪它? (Imagick图书馆不是一个选项)。

如果我的问题有所改进,请告诉我。

修改

我使用了@Martijn建议的imagecopyresized()函数,代码如下

imagecopyresized(
    imagecreatetruecolor(130,155) , 
    imagecreatefromjpeg($src_image) , 
    0, 
    0, 
    0, 
    0, 
    130,  
    155,  
    260 , 
    310   
)

我得到的是这个结果

thumb2

我做错了什么?

1 个答案:

答案 0 :(得分:3)

这对于图书馆来说可能很难,因为黑色的大小可能不同,而您可能想要的图像部分并不总是相同。

我建议jCrop(是的,网站非常小),它允许您选择图像的一部分。如果可以手工完成,这是一种非常简单的方法。我在我公司的CMS'中使用它,我们的客户从不需要解释it works, very natural:)


如果这不是一个选项,您可以尝试imagecopyresampled()

imagecopyresampled(
    $dst_image , // the thumb you want to place it on
    $src_image , // the image to crop it from
    0, // place left of thumb
    0, // place top of thumb
    0, // start from left of input image
    0, // start from top of input image
    130,  // destination width
    155,  // destination height
    $src_w , // the width of the image without the black
    $src_h   // the height of the image without the black
)

如果黑色画布上的图像没有固定大小,则可以编写一个函数来查找偏移量。你可以通过拍摄第一行像素来找到第一个黑色像素,并检查之后是否存在(比方说)10分黑色像素。
这可能是敏感的,您可以增加侦察区域来测试黑色是否也在下面的行中。