スポンサー


    ウェブデザイン基礎講座

    フォトショップ講座

    HTML&CSS講座

    グラフィック講座

    Flash講座

    3D講座

    ウェブプログラミング講座

    サイトメンテナンス講座

    サイト紹介

    スペシャルリンク

サイト内検索

 メールマガジン

テクニック

Homeウェブプログラミング > 20行で作るPHPサムネイル生成スクリプト

20行で作るPHPサムネイル生成スクリプト

投稿日:2007年11月16日   レベル:初心者    ソフトウェア:-
このチュートリアルでは私がAccidental Presidentのサイトで書いたサムネイル生成スクリプトに焦点を当てます。小さい画像を生成するのではなく、写真のセクションを切り取ってぼんやりしたスナップショットを作成します。また、サムネイルのサイズは変更が可能なので、それぞれのサイトの間でスクリプトを使用して異なるサイズのサムネイルを作成します。


Step1:変数を取得
最初に、スクリプトが呼び出される際(最後のセクションを参照)に渡される3つの変数を取得します。$imageはサムネイルにする画像のURLです。$newWidthと$newHeightはサムネイルにする画像の幅と高さです。
$image = $HTTP_GET_VARS['image'];
$newWidth = $HTTP_GET_VARS['width'];
$newHeight = $HTTP_GET_VARS['height'];


Step2:変数を保存
次に使用している画像の本来の幅と高さを調べ、変数$widthと$heightに保存します。
$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];


Step3:画像をトリミング
続いて現在の画像の幅を取り込んで希望する幅を取り除きます。それによって画像が先端ぎりぎりのところで切り取られないようにします。
$width = $width-$newWidth;


同様の作業を画像の高さに対しても行います。
$height = $height-$newHeight;


Step4:サムネイルの調整
これからサムネイルの切り取りを調整するxとyを生成します。方法は目標によっていくつかありますが、ここでは幅と高さを半分にします。
$x = $width/2; $y = $height/2;


コードの続く箇所では画像のコピーを作って名前を$srcにします。
$src = ImageCreateFromJpeg($image);


Step5:空白の画像を作成
続いて希望する幅と高さの空白の画像が作成されます。
$tmb = ImageCreateTrueColor($newWidth,$newHeight);


ここで実際のサムネイルを生成できます。この行で以前の画像を空白の画像にコピーしてから、生成されたxとyを調整を開始します。その結果、指定されたサイズで画像が切り取られます。
ImageCopy($tmb, $src, 0, 0, $x, $y, $newWidth, $newHeight);


Step6:微調整
画像が表示されます。
header('Content-type: image/jpeg');
ImageJpeg($tmb, null, 100);


最後にメモリから画像を消去します。
ImageDestroy($src);
ImageDestroy($tmb);
ImageDestroy($thumb);


最後に、コードのスクリプトを使うには以下のhtmlの行を使用してください。imgタグのsrcを画像に対して指示するのではなく、画像の場所と画像の幅や高さの情報をphpスクリプトとパスに対して指示します。
<img src="thumbnail.php?image=http://www.mysite.com/image.jpg&width=50&height=50" />


Step7:完成
thumbnail.php
<?php

$image = $HTTP_GET_VARS['image'];
$newWidth = $HTTP_GET_VARS['width'];
$newHeight = $HTTP_GET_VARS['height'];

$size = GetImageSize($image);
$width = $size[0];
$height = $size[1];

$width = $width-$newWidth;

$height = $height-$newHeight;

$x = $width/2;
$y = $height/2;

$src = ImageCreateFromJpeg($image);

$tmb = ImageCreateTrueColor($newWidth,$newHeight);

ImageCopy($tmb, $src, 0, 0, $x, $y, $newWidth, $newHeight);

header('Content-type: image/jpeg');
ImageJpeg($tmb, null, 100);

ImageDestroy($src);
ImageDestroy($tmb);
ImageDestroy($thumb);
?>


引用:Web Design Library著者:Stefashwell.com翻訳:菊池



スポンサードリンク

コメント

ランダム記事5件

2016年5月の人気記事ランキング