今日 phpThumbを 利用して イメージを リサイジングした 後 保存する ガール 作った.

思ったより 難しかった ;;

するが 結局 やりこなした.

一応, 私が 使った phpThumb義 バージョンは phpThumb() v1.7.9-200805132119 載せる. これ 点を 分かって 置く 蟹 良い のだ.

また, これ 文を 理解すること 前に phpThumb.php義 使い方を 先に 煮る のが 良い のだ. そうしようとすれば 私が 翻訳した 文等を 見れば 良い. 勿論, phpThumb サイトの デモを 必ず 見ると する.

私が 翻訳した faq(1)義 後から 二 番目 質問, “Q: 生成した ソムネイルを ファイルで 保存する 数 あるんですか?” 項目を 見れば, 客体-オブジェクトを 使いなさいという 言葉が 出る. すなわち, phpThumb.class.phpを 使いなさいという 言葉だ.

phpで 客体を 使う 方法は 見知らぬ 人々が まどろみ あるか 分からない. 私も 冊蘖で 勉強した 次 ひとりで 客体 活用して 掲示板 組んで見て 凡そ これして行った.

ヨトン 使用方法は 簡単なのに, java義 . 役目を phpでは -> こいつが する.

定木… そして javaでは pakage 宣言だけ 日 与えれば 経路を 分かって 寝る 雑誌だけ php増えた そんな こと ない. class ファイルを includeすると する. 勿論 requireしても なる. include_onceを 使えば たいてい 番だけ インクルルドすること だから 二 番(回) インクルルドして オリュナなら どうするの する 恐怖で 脱する 数 ある. require_once度 同じだ.

定木… そんなにして 組んだ コードを 紹介する.

一応 リサイズ 関数を 作った. これ 関数は phpThumb.demo.object.simple.php を ほとんど そのまま 持つ 使った のだ.

//phpThumbResizeFunction.php
function resizeImage($phpThumb, $source_file_name, $thumbnail_width, $output_filename){
	//$thumbnail_width = 100;

	// set data source -- do this first, any settings must be made AFTER this call
	if (is_uploaded_file($source_file_name)) {
		$phpThumb->setSourceFilename($source_file_name);

		echo "ソース ファイル $source_file_name セッティングされたら.";

	} else {
		$phpThumb->setSourceData(file_get_contents($_SERVER['DOCUMENT_ROOT'].'/phpThumb/images/disk.jpg'));

	}

	// PLEASE NOTE:
	// You must set any relevant config settings here. The phpThumb
	// object mode does NOT pull any settings from phpThumb.config.php

	//$phpThumb->setParameter('config_document_root', str_replace($_SERVER['PHP_SELF'],'',$_SERVER['SCRIPT_FILENAME']));
	//$phpThumb->setParameter('config_cache_directory', $phpThumb->getParameter('config_document_root').'/Photo_thumbnail_cache');

	// set parameters (see "URL Parameters" in phpthumb.readme.txt)
	$phpThumb->setParameter('w', $thumbnail_width);
	//$phpThumb->setParameter('fltr', 'gam|1.2');
	//$phpThumb->setParameter('fltr', 'wmi|../watermark.jpg|C|75|20|20');

	// generate & output thumbnail
	if ($phpThumb->GenerateThumbnail()) { // this line is VERY important, do not remove it!
		if ($phpThumb->RenderToFile($output_filename)) {
			// do something on success
			echo 'Successfully rendered to "'.$output_filename.'"';
			return $output_filename;
		} else {
			// do something with debug/error messages
			echo 'error1';
			echo 'Failed:<pre>'.implode("nn", $phpThumb->debugmessages).'</pre>';
		}
	} else {
		echo 'error2';
		// do something with debug/error messages
		echo 'Failed:<pre>'.$phpThumb->fatalerror."nn".implode("nn", $phpThumb->debugmessages).'</pre>';
	}
}

上 関数では 幅だけ 指定して リサイズした. ハイライトした 部分が 彼 部分だ.(24番(回) 竝び) 24番(回) 竝びで 帰って 捜して 表示 面倒な 人は 下の コードを 見れば なる.

// set parameters (see "URL Parameters" in phpthumb.readme.txt)
$phpThumb->setParameter('w', $thumbnail_width);

phpthumb.readme.txt 義 URL Parameters 部分を 参考して Parameterを setすれば なる. 横 サイズだけ なく 縦 サイズも 決める 数 あって, はなはだしくは イメージを 回転する 首都 ある. 黒白処理する 首都 あって 言葉だ. ところで 事実 上 文書を 見る より phpThumb デモを 見る 偏移 もっと 早く 理解する 数 ある. ヨトン, 上 関数を 分かって 直して 使えば なる.

定木, 上の 関数が あるから 今 関数を 使って 見よう. そうしようとすれば 一応, phpThumb義 クラスを インクルルドして, 上 関数も インクルルドすると する. そして phpThumb義 客体 インストンスを 生成して, 何 枝 セッティングを 日 準 後 使えば なる.

//resizeAction.php
include 'phpThumb.class.php';
include 'phpThumbResizeFunction.php';
$phpThumb = new phpThumb();
$phpThumb->setParameter('config_imagemagick_path', 'イメージマジック 変換派である 経路');
// ウブントは イメージマジックの 変換派である 経路が /usr/bin/convert だ.
$phpThumb->setParameter('config_document_root', 'ドキュメント ルート 絶対経路を 少なくて 与える.');
$phpThumb->setParameter('config_cache_directory', 'キャッシュ ディレクトリの 草 経路を 少なくて 与える.');
//当然 キャッシュ ディレクトリの パーミッションは 777路 設定されて あると する.(644人家 しても なるというのに 分からないから;; 777これ 不審な 方々は 捜して 見るのを)
/**
 * resizeImage 関数 使い方
 * resizeImage($phpThumb オブジェクト, $_FILES['パラメーターname']['tmp_name'], 横 サイズ 定数値, 'リサイズ ファイルを 生成する 絶対経路と ファイル名');
 * こんなに すれば リサイズした ファイルの 絶対経路を リターンして 与える.
 * @var unknown_type
 */
$output = resizeImage($phpThumb, $_FILES['userfile']['tmp_name'] , 540, $_SERVER['DOCUMENT_ROOT'].'/Photo_thumbnail_cache/'.$_FILES['userfile']['name']);

定木, 気付きある 方々は この子が input fileを 受ける やつという のを アシル のだ.

それでは ファイルを resizeAction.php路 送る htmlを 組んで 見よう.

<form action="resizeAction.php" enctype="multipart/form-data" method="post">
<input name="userfile" type="file">
<input type="submit">

何, 凡そ こんなに 組めば なる のだ.

間違い 一つが あった.

phpThumb義 間違いなのか 内 設定に 問題が あるのか 分からないのに, ヨトン 引き続き 中間に $_FILES['userfile']['tmp_name']義 値段が 消える のだった. それとともに 下と ような エラー メッセージを ふいた.

"" does not exist

定木, phpThumb 客体は エラーが 出れば よほど 詳細な debug メッセージを 振り撤いて 与える. 目が 帰る 位だ. ところで, 難しがる 必要 ない. メッセージの 大部分は 成功的な 処理を したという debug メッセージだ. 全部 エラー メッセージは ないという 言葉だ.

したがって メッセージを きちんきちんと 読んで 出ながら エラーが 私は 部分を 捜すと する. 私は ところで 下の メッセージ 部分で エラーの 段初を 確認する 数 あった.

skipping GetImageSize() because $this->sourceFilename is empty in file "phpthumb.class.php" on line 2932

翻訳して 見よう. $this->sourceFilenameこれ 空いた だから GetimageSizeを そのまま 移るという ことだ. すなわち, 中間 どこかに tmp_nameこれ 遺失されたという ことだ.($_FILES[‘userfile’][‘tmp_name’]銀 htmlで ファイルを 受けて 臨時で 保存する ファイル名だ. 自動 生成されて /tmp/phpBYur13 なんかで 名前が 決まる. ファイルを 願う 位置に 移して 出れば 削除される.)

追跡を 日 見たら 下の 奴が 問題だった.

//phpThumb.class.php 816目 竝びに ある やつ
$this->sourceFilename =
$this->ResolveFilenameToAbsolute($this->sourceFilename);
//こいつを 柱石処理した.

上 コードを 見れば $this->ResolveFilenameToAbsolute($this->sourceFilename); これ 部分が あるのに, すなわち, ResolveFilenameToAbsolute これ 関数が $sourceFilename を 食べてしまって ヴィン 値段を リターンした のだ.

そのため 上 部分を 柱石処理したら 解決された.

上 関数は ファイルの 絶対経路を 求める のに, どっちみち tmp_nameこれ 絶対経路を 持って行くから なくても 構わなかった. もし 必ず 必要だったら 修正する 蟹 良かったが これくらいで 満足だ.

- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。