(PHP 4, PHP 5, PHP 7, PHP 8)
imagecopyresized — 画像の一部をコピーしサイズを変更する
$dst_image
,$src_image
,$dst_x
,$dst_y
,$src_x
,$src_y
,$dst_width
,$dst_height
,$src_width
,$src_height
imagecopyresized() は指定した画像の矩形部分を
別の画像へコピーします。dst_image
はコピー先の
イメージ ID、src_image
はコピー元のイメージ ID です。
言い換えると、imagecopyresized() は
src_image
の座標 (src_x
,src_y
) にある
幅 src_width
、
高さ src_height
の矩形領域を受け取って、それを dst_image
の座標 (dst_x
,dst_y
)
にある幅 dst_width
、
高さ dst_height
の矩形領域に配置します。
コピー先とコピー元の座標、幅、高さが異なった場合、画像の一部が
適当に伸縮されます。座標の原点は左上です。(仮に、
dst_image
と src_image
が
同一であれば)関数は領域のコピーに使うことができますが、領域が
重なったときの結果は予測できません。
dst_image
コピー先の画像リソース。
src_image
コピー元の画像リソース。
dst_x
コピー先の x 座標。
dst_y
コピー先の y 座標。
src_x
コピー元の x 座標。
src_y
コピー元の y 座標。
dst_width
コピー先の幅。
dst_height
コピー先の高さ。
src_width
コピー元の幅。
src_height
コピー元の高さ。
成功した場合に true
を、失敗した場合に false
を返します。
バージョン | 説明 |
---|---|
8.0.0 |
dst_image と
src_image は、
GdImage
クラスのインスタンスを期待するようになりました。
これより前のバージョンでは、
resource を期待していました。
|
例1 イメージをリサイズする
この例はイメージを半分のサイズで表示します。
<?php
// ファイルと新規サイズ
$filename = 'test.jpg';
$percent = 0.5;
// コンテントタイプ
header('Content-Type: image/jpeg');
// 新規サイズを取得します
list($width, $height) = getimagesize($filename);
$newwidth = $width * $percent;
$newheight = $height * $percent;
// 読み込み
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);
// リサイズ
imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
// 出力
imagejpeg($thumb);
?>
上の例の出力は、 たとえば以下のようになります。
イメージは半分サイズで出力されますが、 imagecopyresampled() を使用するとより良い品質になります。
注意:
パレットイメージの制限(255+1 色)による問題があります。 カラーの再サンプリングやフィルタリングには通常は 255 色以上の色が 必要となります。再サンプルするピクセルとその色を計算するために ある種の近似計算が使用されます。パレットに新しい色を割り当てよう として失敗すると、(理論的に)最も近い色が選択されます。 それは必ずしも常に可視色とは限りません。そのため、 空白(あるいは不可視な)といった不可思議な結果がもたらされます。 この問題を回避するには、imagecreatetruecolor() で 生成されるような True カラーイメージを目的のイメージとして 使用してください。