phpでpsdファイルのサムネイルを表示させる

2010年1月8日金曜日
  • このエントリーをはてなブックマークに追加
めったにないことかもしれませんが、フォームのアップロードからpsdファイルのサムネイルを表示させる必要があったので備忘録的にメモします。

1、classPhpPsdReader.phpをダウンロードする。

91行目のところで、/tmpに添付ファイルを生成するようですが、

<?php
$this->tempFileName = tempnam( getcwd().'/tmp','decompressedImageData');
?>

としてファイルを置いたディレクトリを指定しました。

Webプログラマー+WebデザイナーなZARU日記さんのthumbmake.phpとjquery.form.jsを使ったのですが、
314行目付近でファイル別に関数を指定していることろでpsd用を追加。

<?php
elseif($this->imageType=='image/psd'){
//PSDを読み込み
$srcImage = imagecreatefrompsd($this->srcPath);
}
?>


で、最後にファイルを保存するところで、91行目付近

<?php
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]
などしてこちらもタイムアウトを長くしないと・・・。

ラベル:


0 件のコメント:

コメントを投稿