Pocket
LINEで送る

public function resize_image($tmp_file){
	$w = 96;
	$h = 96;

	list($width, $height, $type) = getimagesize($tmp_file);

	if($width > $w || $height > $h){ //はみ出している
		if($width >= $height){
			$new_width = $w;
			$x = 0;
			$new_height = round($h * $height / $width);
			$y = round(($h - $new_height) / 2);
		}else{
			$new_height = $h;
			$y = 0;
			$new_width = round($w * $width / $height);
			$x = round(($w - $new_width) / 2);
		}
	}else{ //はみ出してない
		$new_width = $width;
		$new_height = $height;
		$x = round(($w - $width) / 2);
		$y = round(($h - $height) / 2);
	}

	//背景画像
	$canvas = imagecreatetruecolor($w, $h);
	$bcolor = imagecolorallocate($canvas, 255, 255, 255);
	imagefilledrectangle($canvas,0,0,$w,$h,$bcolor);


	//画像インスタンス生成
	switch($type){
		case 1: //gif
			$image = imagecreatefromgif($tmp_file);
			break;
		case 2: //jpeg
			$image = imagecreatefromjpeg($tmp_file);
			break;
		case 3: //png
			$image = imagecreatefrompng($tmp_file);
	}

	// 背景画像に、画像をコピーする
	imagecopyresampled(
		$canvas,  // 背景画像
		$image,   // コピー元画像
		$x,        // 背景画像のはりつけ位置(x座標)
		$y,        // 背景画像のはりつけ位置(y座標)
		0,        // コピー元画像のコピー開始位置(x座標)
		0,        // コピー元画像のコピー開始位置(y座標)
		$new_width,   // 背景画像のはりつける幅
		$new_height,  // 背景画像のはりつける高さ
		$width, // コピー元画像のコピーする幅
		$height  // コピー元画像のコピーする高さ
	);

	//画像の出力
	switch($type){
		case 1: //gif
			imagejgif($canvas, $tmp_file);
			break;
		case 2: //jpeg
			imagejpeg($canvas, $tmp_file,100);
			break;
		case 3: //png
			imagepng($canvas, $tmp_file,9);
	}
	imagedestroy($canvas);

	return true;
}
Pocket
LINEで送る

カテゴリー: プログラミング

コメントください

関連記事

プログラミング

cakePHP2 – 多言語化

多言語化します。 cakephpマニュアルのこのページに説明が書いてあ 続きを読む …

プログラミング

Go言語によるビットコインのフルノード実装btcdを調べる(2)

btcdを実行した際のプログラムの流れを最初から確認してみます。 se 続きを読む …

%d人のブロガーが「いいね」をつけました。