如何捕获上传图像的中心部分? (制作缩略图)

时间:2012-03-24 21:41:18

标签: php image upload

我必须处理用户上传的图片,并希望从中创建缩略图,以便创建图片库。

问题在于用户上传的图片尺寸不同,因此限制缩略图的尺寸会使不成比例的图像成为缩略图。

你知道如何捕捉上传图像的中心部分(或截断两侧)吗?或者你知道任何可以处理它的脚本吗?

非常感谢

此致

编辑:

echo '<div class="pic" style="background-image: url(upload/photos/'.$photo1.')"></div>';

    .pic {

    background-position: center center;
    background-repeat: no-repeat;
    background-size: cover;
}

3 个答案:

答案 0 :(得分:0)

除了裁剪图像外,您还可以使用大小合适的普通尺寸调整缩略图,以完全适合您想要的框,并将其设置为背景图像。

因此,如果您的方框为100x100像素,则缩略图图像需要调整为100px宽度(垂直图像)和100px高度(水平图像)。

顺便说一句,对于现代浏览器,您可以使用:

background-size: cover;

使图像完全覆盖盒子,保持其纵横比。

编辑:因此,在您的PHP中,您可以执行以下操作:

echo '<div style="background-image: url(' . $path_to_image . ');"></div>';

并在css中:

background-position: center center;
background-repeat: no-repeat;
background-size: cover;

答案 1 :(得分:0)

您可以在我的github存储库中找到我的书面脚本。在这里,测试它,让我知道。

网址:https://github.com/armpogart/Examples/blob/master/crop_resize/crop.php

答案 2 :(得分:0)

您正在寻找getimagesize()

它需要一个文件名并重新包含一个包含图像信息的数组。

然后你可以用以下内容找到图像的中心:

$image_info = getimagesize( $filename );
$width = $image_info[0];
$height = $image_info[1];    
$center = array($width/2,$height/2);

// continue proccessing your image //

您还可以检查尺寸并决定是否要裁剪图像。使用print_r($image_info);会帮助你。

祝你好运。