ブックマークにスクリーンショットを追加してみました。

August 26th, 2011

この度、当サイトのブックマークにスクリーンショットを追加してみました。


スクリーンショットの画像を自動で生成しようとしたけど、なかなか難しいという事が分かったので、こちらのサイト「ウェブサイトのスクリーンショットを自動生成 - デザインスタジオウェブログ - WEB関連 - ウェッジ」に掲載されてある、自動生成をありがたく使わせて頂きました。


ただし、画像の枚数が増えると読込時間が長くなるし、ウェッジさんのサーバーにも負荷が掛かりそう...。ということで、ひと手間加える事にしたので、それをメモしておきます。


ひと手間

PHPでスクリーンショット画像を読み込んで、自サーバーにコピーする。

まずは、スクリーンショット画像の画像リソースを取得する。

<?php
$ss_url = 'http://www.yahoo.co.jp/'; // スクリーンショット先URL
$ss_path = 'http://www.j-wedg.co.jp/img/?url='. $ss_url; // スクリーンショットのパス

// 画像リソースを取得
$ss = imageCreateFromPNG($ss_path); // PNG形式
?>

画像リソースを元に新しい画像を作成する

imageCreateTrueColor()で生成した画像は、初期の背景色が黒色なので、imageFill()で白色の背景色に変更しています。

<?php
$w = 200; $h = 150; // 画像サイズ
$copy = imageCreateTrueColor($w, $h); // コピー画像を生成
$color_white = imageColorAllocate($out, 255, 255, 255); // 色データを作成
imageFill($copy, 0, 0, $color_white); // 背景色を変更

// 画像のコピー
imageCopyResampled(
    $copy, // コピー先
    $ss, // コピー元
    0,0,0,0, // 座標
    $w,$h,imageSx($ss),imageSy($ss) // サイズ
);
?>

コピーした画像を保存する。

保存先に指定するディレクトリ(/ss)のパーミッションを「0744」または「0777」に変更しておく。

<?php
$dir = '/images/ss/'; // 保存先のディレクトリ
$filename = date('YmdHis'). '.png'; // ファイル名
$path = $_SERVER['DOCUMENT_ROOT']. $dir. $filename; // パス

// PNG画像を保存
imagePNG($copy, $path);
?>
August 26th, 2011