5
imagecopyresized ( 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 )

これが私がやりたいことです:600x1000pxのサイズの画像があり、その画像のサイズを300x500pxに変更した後、100x100pxの親指を作成したいのですが、親指の正方形の左上の点のx座標は100( src x)および120(src y)。

私がマニュアルから理解していることによると、コマンドは

$dst_image = imagecreatetruecolor(100,100);
$src_image = imagecreatefromjpeg('/home/sandbox/imagetoresize.jpg');
imagecopyresized ($dst_image, $src_image, 0, 0, 100, 120, **300 , 500 , 600 , 1000** )

画像はうまくトリミングされていますが、サイズが正しく変更されていません。画像エディタ(GIMP)に表示されるものと一致することはありませんでした。私は何が間違っているのですか?すべての数字が正しいことを確認しましたが、何をしても常に上下にシフトします。

4

2 に答える 2

10

これは、PHPGDを使用して任意のサイズの画像のサイズを任意のサイズに変更するために作成した関数へのリンクです。説明と、クロップトゥフィットまたはレターボックスを使用して目的のアスペクト比に合わせるオプションがあります。

http://www.spotlesswebdesign.com/blog.php?id=1

アップデート

これはもっとこのように見えるはずです。

$dst_image = imagecreatetruecolor(100,100);
$src_image = imagecreatefromjpeg('/home/sandbox/imagetoresize.jpg');
imagecopyresized ($dst_image, $src_image, 0, 0, 100, 120, 100, 100, 400, 400);

ソースから400x400の正方形を取得し、それを宛先の100x100の正方形にコピーします。ソースの正方形の左上は100xと120yです。xとyは、左上隅からのピクセル数を表します。

于 2011-01-08T02:02:57.070 に答える
3

はい、それはうまく修正されました。

Google社員の場合:基本的に必要なことは、ソースの幅と高さを、ソース画像でトリミングする領域の実際の幅と高さにリンクさせることです。つまり、コードは次のようにする必要があります。

imagecopyresized ($dst_image, $src_image, 0, 0, 200, 240, 100, 100, 200, 200);

したがって、変数は実際には次のことを意味します。$src_x=元の正方形の左上の点のx座標。オリジナルは、サムが抽出されるサイズ変更されたバージョンの2倍のサイズであるため、これは200((ori​​ginal_width / resized_width)* x)になります。

$ src_y =同じことですが、y座標を使用します。

$dst_w=生成されたサムネイルの幅-100。

$dst_h=生成されたサムネイルの高さ-100。

$ src_w =元の領域から切り抜く領域の幅((ori​​ginal_width / resized_width)* $ dst_w)

$ src_h =元の領域から切り抜く領域の高さ((ori​​ginal_width / resized_width)* $ dst_h)


dqhendricks:ご協力いただきありがとうございます。本当に感謝しています。私はこれに何時間も頭をかいていた。

于 2011-01-08T14:19:08.923 に答える