2009年07月13日


アップロードされたファイルを縮小して保存

$_FILES に格納されているアップロードが成功した一時ファイルの名前より、それを加工して実際のアップロードディレクトリに格納しています

( ※ 必要ならば、回転も行います )
// *****************************************
// アップロードされたファイルを縮小して保存
// *****************************************
function ImageConvert() {

	global $image_dir,$err_message;

	$err_message = "";

	$upload = $image_dir ."/";
	$_POST['prefix'] = trim($_POST['prefix']);
	if ( $_POST['prefix'] != '' ) {
		$upload .= $_POST['prefix'] ."-";
	}
	$upload .= $_FILES['MyUploadFile']['name'];
 
	# テンポラリディレクトリにある実際のファイル
	$file	= $_FILES['MyUploadFile']['tmp_name'];
 
	# ファイルの属性等を取得
	$target	= getimagesize( $file );
 
	# 現在のサイズ
	if ( $_POST['role'] == '1' ) {
		$width	= $target[1];
		$height	= $target[0];
	}
	else {
		$width	= $target[0];
		$height	= $target[1];
	}

	# 横
	if ( $width > $height ) {
		if ( $width <= 500 ) {
			move_uploaded_file(
				$_FILES['MyUploadFile']['tmp_name'], $upload );
			return;
		}
		$width_new	= 500;
	}
	# 縦
	else {
		if ( $width <= 400 ) {
			move_uploaded_file(
				$_FILES['MyUploadFile']['tmp_name'], $upload );
			return;
		}
		$width_new	= 400;
	}
 
	$height_new = (int)( ($height/$width)*$width_new );
 
	# JPEG

	# 元のファイルのハンドル
	$jpeg		= imagecreatefromjpeg ( $file );
	if ( $_POST['role'] == '1' ) {
		$jpeg = imagerotate($jpeg, -90, 0);
	}
	if ( $_POST['role'] == '2' ) {
		$jpeg = imagerotate($jpeg, 90, 0);
	}
	# 新しいイメージ
	$jpeg_new = imagecreatetruecolor( $width_new, $height_new );
	# サイズ変更して新しいイメージへ転送
	$ret = imagecopyresampled(
		$jpeg_new,
		$jpeg,
		0,
		0,
		0,
		0,
		$width_new,
		$height_new,
		$width,
		$height
	);

	if ( !$ret ) {
		$err_message = "サイズ変更に失敗しました";
		return;
	}

	# JPEG ファイルとして、クオリティ 75 で出力
	$ret = imagejpeg ( $jpeg_new, $upload, 75);
	if ( !$ret ) {
		$err_message = "ファイル作成に失敗しました";
		return;
	}

}





posted by at 2009-07-13 15:16 | PHP | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します