home > 投稿 > php | サムネイル処理コピペ
2010/07/29

php | サムネイル処理コピペ


些細なくせに汎用化しようとすると大げさ、でも使用頻度は高い処理です。 バッチするときにクラスは使いにくいのでコピペ用の function で。
<?php

//ini_set('memory_limit', '128M');
//set_time_limit(0);

$items = array();
forEach(glob('Images/*.jpg') as $file){
	$item	= array($file,fileMTime($file));
	$key	= sha1(implode('&',$item));
	thumbByHeight(	$file,"thumbCache/$key.height.jpg");
	thumbByWidth(	$file,"thumbCache/$key.width.jpg");
	thumbInside(	$file,"thumbCache/$key.inside.jpg");
	$items[] = $item;
}

//print_r($items);

function thumbByHeight($sourceFile,$thumbFile,$thumbHeight = 100){
	if(!file_exists($sourceFile)) return false;
	if(!file_exists($thumbFile)){
		$src			= imageCreateFromString(file_get_contents($sourceFile));
		$srcWidth		= imageSX($src);
		$srcHeight		= imageSY($src);
		$scale			= $thumbHeight/$srcHeight;
		$thumbWidth		= round($srcWidth*$scale);
		$thumb			= imageCreateTruecolor ( $thumbWidth , $thumbHeight );
		imageCopyResampled(
			$thumb,						$src,
			0,0,						0,0,
			$thumbWidth,$thumbHeight,	$srcWidth,$srcHeight
		);
		imagejpeg ($thumb,$thumbFile,100);
		touch($thumbFile,fileMTime($sourceFile));
	}
	return $thumbFile;
}

function thumbByWidth($sourceFile,$thumbFile,$thumbWidth = 100){
	if(!file_exists($sourceFile)) return false;
	if(!file_exists($thumbFile)){
		$src			= imageCreateFromString(file_get_contents($sourceFile));
		$srcWidth		= imageSX($src);
		$srcHeight		= imageSY($src);
		$scale			= $thumbWidth/$srcWidth;
		$thumbHeight	= round($srcHeight*$scale);
		$thumb			= imageCreateTruecolor ( $thumbWidth , $thumbHeight );
		imageCopyResampled(
			$thumb,						$src,
			0,0,						0,0,
			$thumbWidth,$thumbHeight,	$srcWidth,$srcHeight
		);
		imagejpeg($thumb,$thumbFile,100);
		touch($thumbFile,fileMTime($sourceFile));
	}
	return $thumbFile;
}

function thumbInside($sourceFile,$thumbFile,$thumbSize = 100){
	if(!file_exists($sourceFile)) return false;
	if(!file_exists($thumbFile)){
		$src			= imageCreateFromString(file_get_contents($sourceFile));
		$srcWidth		= imageSX($src);
		$srcHeight		= imageSY($src);
		if($srcWidth>$srcHeight){
			$thumbWidth		= $thumbSize;
			$scale			= $thumbWidth/$srcWidth;
			$thumbHeight	= round($srcHeight*$scale);
		}else{
			$thumbHeight	= $thumbSize;
			$scale			= $thumbHeight/$srcHeight;
			$thumbWidth		= round($srcWidth*$scale);
		}
		$thumb			= imageCreateTruecolor ( $thumbWidth , $thumbHeight );
		imageCopyResampled(
			$thumb,						$src,
			0,0,						0,0,
			$thumbWidth,$thumbHeight,	$srcWidth,$srcHeight
		);
		imagejpeg($thumb,$thumbFile,100);
		touch($thumbFile,fileMTime($sourceFile));
	}
	return $thumbFile;
}

トラックバックURL

http://faces2.bascule.co.jp/mt/mt-tb.cgi/607

コメントを投稿

(コメントには承認が必要になることがあります。承認されるまではコメントは表示されません。)