Php/docs/function.imagecopyresized

提供:Dev Guides
< Php
移動先:案内検索

imagecopyresized

(PHP 4, PHP 5, PHP 7)

imagecopyresized画像の一部をコピーしサイズを変更する


説明

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 ) : bool

imagecopyresized() は指定した画像の矩形部分を 別の画像へコピーします。dst_image はコピー先の イメージ ID、src_image はコピー元のイメージ ID です。

言い換えると、imagecopyresized()src_image の座標 (src_x,src_y) にある 幅 src_w、高さ src_h の矩形領域を受け取って、それを dst_image の座標 (dst_x,dst_y) にある幅 dst_w、高さ dst_h の矩形領域に配置します。

コピー先とコピー元の座標、幅、高さが異なった場合、画像の一部が 適当に伸縮されます。座標の原点は左上です。(仮に、 dst_imagesrc_image が 同一であれば)関数は領域のコピーに使うことができますが、領域が 重なったときの結果は予測できません。


パラメータ

dst_image
コピー先の画像リソース。
src_image
コピー元の画像リソース。
dst_x
コピー先の x 座標。
dst_y
コピー先の y 座標。
src_x
コピー元の x 座標。
src_y
コピー元の y 座標。
dst_w
コピー先の幅。
dst_h
コピー先の高さ。
src_w
コピー元の幅。
src_h
コピー元の高さ。


返り値

成功した場合に true を、失敗した場合に false を返します。


例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 カラーイメージを目的のイメージとして 使用してください。

参考

  • imagecopyresampled() - 再サンプリングを行いイメージの一部をコピー、伸縮する
  • imagescale() - 幅と高さを指定して、画像の縮尺を変更する
  • imagecrop() - 指定した矩形に画像をクロップする