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」は「Not」を示しています):

ここに画像の説明を入力

コードの何が問題なのかわかりません。画像に何が起こっているのかが大きくなります..

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

第 3 パラメータに 95 を追加してみてください。

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

PSサードパーティの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 に答える