【PHP】画像を扱う

イメージ関数を使うには?

PHP.iniの設定

修正前

;extension=php_gd2.dll

修正後

extension=php_gd2.dll
";"を消し、Apacheを再起動させる

イメージ関数

GetImageSize()

http://php.net/manual/ja/function.getimagesize.php


imagecreatefromgif()/imagecreatefrompng()/imagecreatefromjpeg()

* 新しい画像をファイルあるいは URL から作成する

imagedestroy()

* PHPで表現された画像を、メモリ上から解放する
http://www.scollabo.com/banban/php/ref/ref_imagedestroy.html

ImageGIF()/ImagePNG()/ImageJPEG()

* 画像をブラウザあるいはファイルに出力する
http://php.net/manual/ja/function.imagegif.php
画像 image から GIF ファイル filename を作成

bool imagegif ( resource $image [, string $filename ] )

ImageCopyResampled()

* イメージの一部をコピー、伸縮する
http://php.net/manual/ja/function.imagecopyresampled.php
ImageCopyResampled(
【コピー先の画像リンクリソース】, 
【コピー元の画像リンクリソース】,
 【コピー先の x 座標】,  【y 座標】, 
 【コピー元の x 座標】,  【y 座標】,
 【コピー先の 幅】,  【高さ】, 
 【コピー元の 幅】,  【高さ】
);

画像の扱い

画像の幅と高さの取得

$image = "http://i.yimg.jp/images/socialproducts/common/nophoto/nophoto_100x100.gif";
$size = GetImageSize($image);

// 幅の取得
$width = $size[0];
// 高さの取得
$heigth = $size[1];

画像の種類の判定

$sourceImage = "./testData.gif";
$size = GetImageSize($sourceImage);

// 幅の取得
$width = $size[0];
// 高さの取得
$heigth = $size[1];

switch ($size[2])
{
	case IMAGETYPE_GIF:
		$newImage = ImageCreate(15, 15);
		$image = imagecreatefromgif($image);
		break;
	case IMAGETYPE_PNG:
		$newImage = ImageCreateTrueColor(15, 15);
		$image = imagecreatefrompng($image);
		break;
	case IMAGETYPE_JPEG:
	default:
		$newImage = ImageCreateTrueColor(15, 15);
		$image = imagecreatefromjpeg($image);
}

ImageCopyResampled($newImage, $image, 0, 0, 0, 0, 15, 15, $width, $height);

// output
switch ($size[2])
{
	case IMAGETYPE_GIF:
		ImageGIF($newImage, $sourceImage);
		break;
	case IMAGETYPE_PNG:
		ImagePNG($newImage, $sourceImage);
		break;
	case IMAGETYPE_JPEG:
		default:
		ImageJPEG($newImage, $sourceImage);
}
imagedestroy($image);
imagedestroy($newImage);