PHP マニュアル
前のページ |  | 次のページ

# imagecopyresampled

(PHP 4 >= 4.0.6, PHP 5)

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() は、イメージの矩形の部分 を別のイメージにコピーします。同時にピクセル値を滑らかに補間を行 い、このため、特にサイズを小さくした場合には鮮明さが維持されます。 成功した場合に `TRUE` を、失敗した場合に `FALSE` を返します。

dst_im は、コピー先のイメージで、 src_im はコピー元のイメージIDです。コピー 元とコピー先の座標、幅、高さが異なる場合には、適当なイメージ伸縮 が行われます。座標は、左上を基準とします。この関数は、同じイメー ジ内の領域にコピーする場合にも使用可能です。 (dst_imageが src_imageと 同じ場合。)しかし、領域が重なる場合の結果は予測できません。

imagecopyresized()も参照ください。

> 注意: パレットイメージの制限(255+1色)による問題があります。 カラーの再サンプリングやフィルタリングには通常は255色以上の色が 必要となります。再サンプルするピクセルとその色を計算するために ある種の近似計算が使用されます。パレットに新しい色を割り当てよう として失敗すると、(理論的に)最も近い色が選択されます。 それは必ずしも常に可視色とは限りません。そのため、 空白(あるいは不可視な)といった不可思議な結果がもたらされます。 この問題を回避するには、imagecreatetruecolor()で 生成されるようなTrueカラーイメージを目的のイメージとして 使用してください。

> 注意: この関数は、GD 2.0.1 以降を必要とします。

## 例

例 1. 簡単なサンプル

この例は、イメージをオリジナルの半分のサイズに再サンプルします。

`<?php
// ファイル
$filename = 'test.jpg';
$percent = 0.5;
// コンテントタイプ
header('Content-type: image/jpeg');
// 新規サイズを取得する
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;
// 再サンプル
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// 出力
imagejpeg($image_p, null, 100);
?>`

例 2. イメージを均等に再サンプルする

この例は最大の幅もしくは高さが 200 ピクセルのイメージを表示します。

`<?php
// ファイル
$filename = 'test.jpg';
// 最大の高さ・幅を設定する
$width = 200;
$height = 200;
// コンテントタイプ
header('Content-type: image/jpeg');
// 新規サイズを取得する
list($width_orig, $height_orig) = getimagesize($filename);
if ($width && ($width_orig < $height_orig)) {
$width = ($height / $height_orig) * $width_orig;
} else {
$height = ($width / $width_orig) * $height_orig;
}
// 再サンプル
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
// 出力
imagejpeg($image_p, null, 100);
?>`

## 参考

imagecopyresized()

前のページ | ホーム | 次のページ
imagecopymergegray | 上に戻る | imagecopyresized