调整图像大小和裁剪图像

Posted

技术标签:

【中文标题】调整图像大小和裁剪图像【英文标题】:resize and crop a image 【发布时间】:2011-10-10 06:32:26 【问题描述】:

实际上,我不知道是否有任何 php 函数可以使用给定的参数(x1、y1、x2、y2、宽度、高度)和图像名称来裁剪和重新调整图像大小。

我看起来像下面的函数,它使用现有图像的给定参数创建新图像。

 newimg(x1,y1,x2,y2,width,height,image);

目前我已经使用 javascript 获得了以上所有参数,但现在我想根据以上参数裁剪图像。

【问题讨论】:

gist.github.com/880506 【参考方案1】:

imagecopyresampled() 可以做到这一点:

imagecopyresampled() 将一幅图像的矩形部分复制到另一幅图像,平滑地插值像素值,因此,特别是在减小图像尺寸时仍能保持很大的清晰度。 p>

换句话说,imagecopyresampled() 将从src_image 获取宽度为src_w 和高度为src_h 的矩形区域(src_x,src_y)并将其放置在位置为 (dst_x,dst_y) 的宽度为 dst_w 和高度为 dst_h 的矩形区域中。

如果源和目标坐标以及宽度和高度不同,则会对图像片段进行适当的拉伸或收缩。坐标指的是左上角。此函数可用于复制同一图像中的区域(如果dst_imagesrc_image 相同),但如果区域重叠,则结果将不可预测。


在你的情况下(未经测试):

function newimg($x1, $y1, $x2, $y2, $width, $height, $image) 
    $newimg = ... // Create new image of $width x $height
    imagecopyresampled(
        $newimg, // Destination
        $image, // Source
        0, // Destination, x
        0, // Destination, y
        $x1, // Source, x
        $y1, // Source, y
        $width, // Destination, width
        $height, // Destination, height
        $x2 - $x1, // Source, width
        $y2 - $y1 // Source, height
    );

    return $newimg;

【讨论】:

【参考方案2】:

PHP 的主要图像库是GD 和ImageMagick。两者都可以调整图像大小和裁剪图像。

【讨论】:

以上是关于调整图像大小和裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章

调整图像大小和裁剪图像

PHP:图像调整大小和裁剪为纵向

通过调整图像 url 将图像裁剪为正确大小

在 UITableViewCells 中显示之前调整图像大小和裁剪图像

PHP图像调整大小和裁剪功能

C#:同时调整图像大小和裁剪