セピア調化

画像をセピア調に変換するサンプルです。

グレイスケール化することによって輝度情報を取り出し、全体をセピア調(茶色)っぽく変換しています。

サンプルコード



<?php

$img = ImageCreateFromJPEG('sample0.jpg');

// グレースケール化
imagefilter($img, IMG_FILTER_GRAYSCALE);

$width = ImageSx($img);
$height = ImageSy($img);

// 画像中の全ピクセルに対して処理する
for ($y=0; $y < $height; $y++) {
  for ($x=0; $x < $width; $x++) {

    // ピクセル値を取得
    $pixel = ImageColorAt($img, $x, $y);

    // グレイスケールなので必ず、R == G == B
    // になるが、RGB説明のために個別に取り出す
    $r = ($pixel >> 16) & 0xff;
    $g = ($pixel >> 8)  & 0xff;
    $b = $pixel & 0xff;

    // セピア調な値にする
    $r = ($r * 240) / 255;
    $g = ($g * 200) / 255;
    $b = ($g * 148) / 255;

    // ピクセルの値を変更する
    ImageSetPixel($img, $x, $y, ImageColorResolve($img, $r, $g, $b));
  }
}

header('Content-Type: image/jpeg');
ImageJPEG($img);

?>


動作例



<img src="script/sepia.php">



元画像