July 11, 2014

PHPでGDを使って画像を鮮明(シャープ)にする

PHP 5.1.0以上で使えるimageconvolution関数を使って画像を鮮明にする。サムネイルなど小さな画像は多少鮮明にすると見やすくなる。

// test.jpgを読み込む
$image = imagecreatefromjpeg('test.jpg');
if ($image !== false) {
  $matrix = array(
    array(0.0, -1.0, 0.0),
    array(-1.0, 9.0, -1.0),
    array(0.0, -1.0, 0.0)
  );
  $divisor = array_sum(array_map('array_sum', $matrix));
  imageconvolution($image, $matrix, $divisor, 0);

  // out.jpgに出力
  imagejpeg($image, 'out.jpg');

  imagedestroy($image);
}

$matrixの真ん中の値(上の例では9.0)を小さくしていくとよりシャープになり、大きくしていくとシャープ加減が弱くなる。4.5以下はあまり実用的ではない感じ。個人的には9.0が好み。

Posted by Nao Iizuka <iizuka@kyu-mu.net>
Powered by Bitter