1

寸法の画像があります1440 X 500

200pxこの画像の左と右をトリミングする必要があり200pxます。つまり、新しい画像は の寸法を持つ必要があり1040 X 500ます。

私はこれを試しています

$original_w = 1440;
$original_h = 500;

$new_w = 1040;
$new_h = 500;

$new_img = imagecreatetruecolor( $new_w, $new_h);
imagecopyresampled($new_img, $original_img, 200, 0, 200, 0, $new_w, $new_h, $original_w, $original_h);

望ましい結果が得られませんでした。助けてください。何が間違っていますか?

4

2 に答える 2

3

PHP docを読んで、imagecopyresampled間違った使い方をしています:

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 
)

そう :

$original_w = 1440;
$original_h = 500;

$new_w = 1040;
$new_h = 500;

$new_img = imagecreatetruecolor( $new_w, $new_h);
imagecopyresampled($new_img, $original_img, 0, 0, 200, 0, $new_w, $new_h, $new_w, $new_h);

1040*500 ボックスを (200,0) 座標から (0,0) 座標の新しい画像にコピーします。

于 2013-02-07T13:53:57.337 に答える
2

あなたが欲しいのはおそらくこれです:

imagecopyresampled($new_img, $original_img, -200, 0, 0, 0, $new_w, $new_h, $original_w, $original_h);

これはPHPに次のように指示します。

座標(0、0)で始まる1440x500画像を(-200、0)で始まる1040x500キャンバスにコピーします

このようにして、元の画像をキャンバスから200ピクセル左にシフトし、キャンバスの幅を400ピクセル縮小します(右側の200ピクセルも切り取られます)。

私はそれがあなたが探しているものをあなたに与えるべきだと信じています。

于 2013-02-07T13:53:26.623 に答える