Php 裁剪扭曲/缩放图像

Php 裁剪扭曲/缩放图像,php,image,gd,crop,image-resizing,Php,Image,Gd,Crop,Image Resizing,我有以下PHP代码: $w = 300; // Width of new image $h = 300; // Height of new image $oh = 540; // Original file height $ow = 720; // Original file width $x = 196; $y = 50; $image = imagecreatefromjpeg('fileToCrop.jpg'); $cropped_image = imagecreatetruecolor

我有以下PHP代码:

$w = 300; // Width of new image
$h = 300; // Height of new image
$oh = 540; // Original file height
$ow = 720; // Original file width
$x = 196;
$y = 50;

$image = imagecreatefromjpeg('fileToCrop.jpg');
$cropped_image = imagecreatetruecolor($w, $h);
imagecopyresampled($cropped_image, $image, 0, 0, $x, $y, $ow, $oh, $w, $h);

imagejpeg($cropped_image, 'fileToCrop.jpg', 100);
想要裁剪图像,但我的图像扭曲/高于原始图像,例如:

原件:

裁剪(“N”表示“非”):


我看不出我的代码有什么问题,图像的质量也会变得更大。

因为您忽略了imagejpeg()的质量,它默认为75%

你能试着在第三个参数上加上95吗

imagejpeg($cropped_image, 'fileToCrop.jpg', 95);
附言。 如果您可以使用第三方php脚本,我建议您使用timthumb

如果您需要更改裁剪位置


您反转了
imagecopyresampled

bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
换成

imagecopyresampled($cropped_image, $image, 0, 0, $x, $y, $w, $h, $ow, $oh);
但事实上,你确定你不是在寻找裁剪区域的直接副本吗

imagecopy($cropped_image, $image, 0, 0, $x, $y, $ow, $oh);

原始尺寸为720x540。使用以下函数获取高度/宽度@twodayslate抱歉,这是一个输入错误。这不符合预期,因为图像已重新采样。我需要一张1:1的图像,但裁剪用户选择的零件。我只需要一张原始图像,但比例相同。例如,从400x400px的图像中提取一个300x300px的正方形。这就是
imagecopy
将在此处进行的一些更改,并且所有更改都可以使用
imagecopy
而不是
imagecopy重采样
,谢谢!(:我已经定义了质量,但未按预期工作。