phpでpsdファイルのサムネイルを表示させる
めったにないことかもしれませんが、フォームのアップロードからpsdファイルのサムネイルを表示させる必要があったので備忘録的にメモします。
1、classPhpPsdReader.phpをダウンロードする。
91行目のところで、/tmpに添付ファイルを生成するようですが、
としてファイルを置いたディレクトリを指定しました。
Webプログラマー+WebデザイナーなZARU日記さんのthumbmake.phpとjquery.form.jsを使ったのですが、
314行目付近でファイル別に関数を指定していることろでpsd用を追加。
で、最後にファイルを保存するところで、91行目付近
と、psdをjpgとしてサムネールを作るように指定。
拡張子が.psdなのにjpgという感じになってたのでとりあえず拡張子を変更・・・。
ただ、処理だけは結構重いようで、2Mのpsdを変換するのに2分程度かかりました。
.htaccessで、
php_value max_execution_time 3000
php_value max_input_time 3000
などするようにして、タイムアウトの時間を長くしないといけませんね。
あと、ajaxな処理のときは、
[javascript]
$(document).ready(function(){
$.ajaxSetup({timeout:600000});
}
[/javascript]
などしてこちらもタイムアウトを長くしないと・・・。
1、classPhpPsdReader.phpをダウンロードする。
91行目のところで、/tmpに添付ファイルを生成するようですが、
$this->tempFileName = tempnam( getcwd().'/tmp','decompressedImageData');
?>
としてファイルを置いたディレクトリを指定しました。
Webプログラマー+WebデザイナーなZARU日記さんのthumbmake.phpとjquery.form.jsを使ったのですが、
314行目付近でファイル別に関数を指定していることろでpsd用を追加。
elseif($this->imageType=='image/psd'){
//PSDを読み込み
$srcImage = imagecreatefrompsd($this->srcPath);
}
?>
で、最後にファイルを保存するところで、91行目付近
elseif($this->imageType == 'image/psd'){
//jpegで出力のため拡張子をjpgに変更
$refilename = explode("." , $this->dstPath);
$refilename = array_shift($refilename);
$this->dstPath = $refilename.'.jpg';
return imageJpeg($this->dstImage,$this->dstPath,$this->quality);
}
?>
と、psdをjpgとしてサムネールを作るように指定。
拡張子が.psdなのにjpgという感じになってたのでとりあえず拡張子を変更・・・。
ただ、処理だけは結構重いようで、2Mのpsdを変換するのに2分程度かかりました。
.htaccessで、
php_value max_execution_time 3000
php_value max_input_time 3000
などするようにして、タイムアウトの時間を長くしないといけませんね。
あと、ajaxな処理のときは、
[javascript]
$(document).ready(function(){
$.ajaxSetup({timeout:600000});
}
[/javascript]
などしてこちらもタイムアウトを長くしないと・・・。