**attach.inc.php/ref.inc.php [#m397cdec]
|RIGHT:100|LEFT:360|c
|~サマリ|attachプラグインに一括添付とサムネイル生成機能を追加|
|~リビジョン|1.0|
|~対応バージョン|1.4.2|
|~投稿者|[[ARAI]]|
|~投稿日|&new{2003-11-30 (SUN) 20:44:32};|
***概要 [#i0728bfb]
ページに添付されたデジカメ画像をExif情報の一部とともに一覧表示するプラグインを作成中なのですが、標準のattachだと、

-1度に1ファイルしか添付出来ないので、10枚以上も添付しようとすると面倒
-openfileで画像をimgタグ参照すると、width/heightで表示サイズは制御できるものの、常にフルサイズのファイルが出力されるため、転送量の点ではあまり良くない

というのが気になったので、少し改造してみました。

-Tar(Tar+GzでもなければTar+Bzip2でもない)アーカイブファイルを展開して、収められたファイルを全て添付する
-縮小/低画質化したサムネイルを生成(要GD)

の2点です。

また、サムネイル生成改造に対応してrefプラグインにも手を入れてみました。

***ダウンロード [#p99475f1]
→ [[attach・refプラグイン改造:http://m-arai.s41.xrea.com/closet/20.html]]
***使い方 [#f912f401]

Tarアーカイブ(拡張子.tar)一括添付の際には、「UnTar」をチェックする。
***コメント [#t0de2e5e]
-[[たらこせる]] &new{2003-12-19 (FRI) 14:42:54};
~使わせていただきました。が、paintプラグインで吐き出される#ref(hoge.jpeg,wrap,around)を表示してくれませんでした。
-[[ARAI]] &new{2003-12-20 (SAT) 08:21:00};
~拡張子が'jpeg'の場合を考えていませんでした。
 --- attach.inc.php      4 Dec 2003 09:38:50 -0000       1.7
 +++ attach.inc.php      19 Dec 2003 23:20:51 -0000
 @@ -736,7 +736,8 @@
             // for japanese (???)
             $filename = htmlspecialchars(mb_convert_encoding($this->file,'SJIS','auto'));
 
 -        switch (( $type = strtolower(substr($filename,-3)))) {
 +        switch ( $type = strtolower(substr($filename,strrpos($filename,'.')+1))) {
 +            case 'jpeg':
              case 'jpg':
                  $src = imagecreatefromjpeg($this->filename);
                  break;
 @@ -776,6 +777,7 @@
             }
 
          switch ( $type ) {
 +            case 'jpeg':
              case 'jpg':
                  imagecopyresampled( $dst, $src, 0, 0, 0, 0, $dw, $dh, $sw, $sh);
                  imageinterlace( $dst, 1);
これで表示されると思います。御指摘ありがとうございます。
-[[たらこせる]] &new{2003-12-20 (SAT) 11:51:05};
~対応ありがとうございます。大丈夫なようです。exifshowcaseともども使用させていただいてるんですが、Exifデータ編集について不慣れなのでこれから覚えてみようと思います。
-[[まるぱ]] &new{2004-02-04 (WED) 07:56:28};
~自動的に縮小画像を作ってくれる機能が欲しかったので、非常にうれしいです:) 最以前僕がどこかに書いた'info'オプションも取り込んでいただいているようで、感激しました!ありがたく使わせてもらいますm(__)m
-[[まるぱ]] &new{2004-02-04 (WED) 10:28:14};
~jpg以外のサムネイルの作成にimagecopyresized()が使われていますが(attach.inc.php)、これだとサムネイルが汚くなってしまいました。jpgと同じようにimagecopyresampled()を使った方がいいのではないかと思うのですが、いかがでしょうか。
-[[ARAI]] &new{2004-02-04 (WED) 19:32:13};
~不案内なところでやった改造なので穴も結構あると思いますが、お役に立っていれば幸いです。imagecopyresizedについては、何か理由があった筈ですけど、思い出せません⌣。記憶が甦ったら再検討してみます。
~ところで、'info'オプションについてはオリジナルのrefプラグインそのままですよ。
-[[まるぱ]] &new{2004-02-05 (THU) 15:29:57};
~じゃあinfoオプションは思いっきり勘違いでした(^^;;どうも失礼しましたm(__)m とりあえずうちではimagecopyresampledに変更したら、縮小後も綺麗に表示されて幸せになってます:) もしかすると環境によってはうまく動かなかったりするのかもしれませんが・・・
-[[るく]] &new{2004-02-23 (MON) 18:47:54};
~変な質問すみません、使ってみたいのですが導入方法で迷っています。この差分ファイルというのは何かのツールに読み込ませたりして使うのでしょうか? もしかして手動書き換え?(怖  
--[[reimy]] &new{2004-02-23 (MON) 18:52:37};
~[[続・質問箱/23]]参照。
-[[るく]] &new{2004-02-23 (MON) 18:59:42};
~見てみます!ログ汚してごめんなさい
-[[xpoint]] &new{2004-05-14 (FRI) 18:38:40};
~はじめて書き込みさせていただきます.TARファイル内に日本語表記のファイル名
があった場合,文字化けしてしまいます.また文字化けファイルを削除しようとしても削除できないので,以下の様に修正しましたが,問題あるでしょうか...
よろしくお願いします.
 function untar( $tname, $odir)
 ....
 			$files[$cnt  ]['tmpname'] = $tname;
 			$files[$cnt++]['extname'] = mb_convert_encoding($name,'EUC','auto');// 修正
 		}
 	}
 	fclose( $fp);
 
 	return $files;	
 }
-[[ARAI]] &new{2004-05-14 (FRI) 20:21:40};
~その対処で問題はないでしょう。同等の対策が[[attach・refプラグイン改造:http://m-arai.s41.xrea.com/closet/20.html]]に置いてある版には施されています。が、そこにも書いてありますが、2バイトコードファイル名はあまりオススメしません。
-[[xpoint]] &new{2004-05-19 (WED) 09:38:13};
~ありがとうございます.2バイトコードの件了解したうえで,すごくローカルなところで運営しているので,よしとした上で使用します.ありがとうございました.
-[[u]] &new{2004-07-02 (FRI) 16:07:45};
~refの方で、titleを指定しても無視されるようになったんですが、仕様なんでしょうか?
--[[ARAI]] &new{2004-07-03 (SAT) 00:44:22};
~直しました。ご指摘ありがとうございます。
-[[u]] &new{2004-07-05 (MON) 01:20:21};
~すいません返信遅れました。ありがとうございます。
-もの凄く重宝してます!ところで、生成したサムネイルをキャッシュする機能が欲しくてたまらないので、ちまちまと作ろうと思うのですが、パッチのパッチとして配布してもいいですか?GPLだからOKかな?今はattachで縮小してますが、refで縮小してキャッシュに変えたりとよく分かりませんけど色々とやってみます :( とりあえずamazon.inc.phpを参考にしてみます。-- [[でぃあばぁ]] &new{2004-09-16 (木) 13:26:00};
--勿論問題ありません。パッチのパッチだと使い難いので、まとめてしまって標準へのパッチとして公開した方が良いでしょう。 
~キャッシュ機能は、私ならattachに付けるでしょうね。大きさX,Yでthumbを要求された時、元ファイルより新しいCACHE_DIR/thumb_'encode(添付ページ名)'_'encode(添付ファイル名)'_'XxY'があればそれを出力し、無ければサムネイル作成を行い、ファイル保存と画像出力するようにするとか。
~頑張って良いものを作ってください。 -- [[ARAI]] &new{2004-09-16 (木) 18:51:09};
--ありがとうございます!頑張ってみます! -- [[でぃあばぁ]] &new{2004-09-17 (金) 07:03:30};
--キャッシュ機能つけました!&ref(attach_ref_d.diff); PukiWiki1.4.3への差分です。 サンプルを[[自分のサイト>http://cubic9.com/PukiWiki/%B2%FE%C2%A4/%B0%EC%B3%E7%C5%BA%C9%D5%A1%A6%A5%B5%A5%E0%A5%CD%A5%A4%A5%EB%BD%D0%CE%CF%A1%A6%A5%AD%A5%E3%A5%C3%A5%B7%A5%E5.html]]で公開しました。 -- [[でぃあばぁ]] &new{2004-09-20 (月) 15:41:24};
--私も連休中で作ってみました⌣ &ref(attach_ref_s.diff.bz2); 1.4.4への差分です。CVSがよく分かってないのでタグ(?)はそのままです。 -- [[Snake]] &new{2004-09-20 (月) 16:39:46};
--完敗です!(笑) -- [[でぃあばぁ]] &new{2004-09-20 (月) 17:19:03};
--いえいえ、透過PNGは考えつきませんでした。で、ちょっと弄ってみたんですが、背景色が黒以外でresampledだとゴミが入りますね。中間色の問題もあります。resizedだと画質は悪いけど透過に関しては問題ありません。TrueColorな透過PNGはIEしか使ってないので試してません(^^; AttachFile->thumb()の該当箇所を以下のようにするといいです。 -- [[Snake]] &new{2004-09-20 (月) 20:55:46};
 $dst = imagecreatetruecolor($dw, $dh);
 if (PNGで保存するなら) {
 	$alpha = imagecolorallocate($dst, 255, 255, 255); // 色の作成
 	imagefill($dst, 0, 0, $alpha);                    // 指定色で塗りつぶし
 	imagecolortransparent($dst, $alpha);              // 指定色を透明色に
 	imagecolordeallocate($dst, $alpha);               // 色リソースの開放
 	imagesavealpha($dst, TRUE);
 }

#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.012 sec.

SourceForge