2

我有以下 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”):

在此处输入图像描述

我看不出我的代码有什么问题,并且图像发生的事情变得更大..

4

2 回答 2

1

你倒置了最后 4 个参数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);
于 2012-11-17T05:47:16.877 回答
0

因为您省略了 imagejpeg() 上的质量,所以它默认为 75% http://php.net/manual/en/function.imagejpeg.php

您可以尝试在第三个参数上添加 95 吗?

imagejpeg($cropped_image, 'fileToCrop.jpg', 95);

PS 如果你可以使用 3rdparty php 脚本,我建议你只使用 timthumb http://www.binarymoon.co.uk/projects/timthumb/

如果您需要改变种植地点,

http://www.binarymoon.co.uk/2010/08/timthumb-part-4-moving-crop-location/

于 2012-11-17T05:45:50.417 回答