**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への差分です。 サンプルを[[自分のサイト>cubic9.com:PukiWiki/改造/一括添付・サムネイル出力・キャッシュ]]で公開しました。 -- [[でぃあばぁ]] &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); } --おお!imagesavealphaは初耳でした。ありがとうございます。 -- [[でぃあばぁ]] &new{2004-09-20 (月) 22:35:28}; - (exifshowcaseに関する話題は http://m-arai.s41.xrea.com/closet/22.html に転載しました) -これを使いたいのですが、1.4.5用に作ってもらえませんか? 自力でやろうと思いましたが、ずいぶんと1.4.4とattach内部が変わっていて、挫折…… -- [[bunga]] &new{2005-06-25 (土) 09:57:46}; -とりあえずのものを[[cubic9.com:PukiWiki/改造/一括添付・サムネイル出力・キャッシュ]]で公開しました。 -- [[でぃあばぁ]] &new{2005-07-16 (土) 05:49:56}; - ARAI さん,でぃあばぁさん,大変便利なパッチをありがとうございます.一点リクエストですが,ref プラグインで画像のサムネイル化をデフォルトで有効にするのではなく,wrap/nowrap オプションのように選択できるようにしていただけないでしょうか.今は,他人が登録した画像に影響がでないよう(ref プラグインの互換性が保たれるよう),そのような改造を施して使っています. -- [[koni]] &new{2005-12-30 (金) 13:00:05}; -- 改造というやつを [[ここ:http://www.konis.org/pub/pukiwiki/patch-to-attach_ref_d_146]] に置いておきます.でぃあばぁさんの attach_ref_d_146.diff.4 パッチ適用後の ref プラグインに対する差分です. -- [[koni]] &new{2005-12-30 (金) 19:58:05}; - 初心者で済みません。patchがうまくできません。~ ファイル構成をpukiwiki<plugin<attach.inc.phpなどとすると、pukiwikiの一つ上のフォルダをカレントディレクトリとして、attach_ref.diffファイルをカレントディレクトリに置いて、 patch -p0 -d . -E < attach_ref.diff とコマンドを実行すればいいんですよね? ダウンロードしたattach_ref.diff.5の後ろの数字は削って。~ なぜかうまくいきません。書き換えられるファイルはattach.inc.php以外にもありますか?~ そもそもattach.inc.phpを大きいファイルも添付できるように変えているのが駄目ですか?教えて下さい。-- [[のの]] &new{2008-01-14 (月) 03:44:49}; - 厳しいようですが、 --一体その「patch -p0 -d . -E < 」はどこからコピペしてきたものですか?オプションの意味を理解しないで、訳も分らず抜き出してきたものをただ実行しても、うまくいく確率は低いでしょう。 --「ダウンロードしたattach_ref.diff.5」って何ですか?このページには添付されないようです。((出所が分らないものは、第3者の検証を受けられません。)) --「なぜかうまくいきません」…あなたの隣に居るわけではない人たちには完全に情報ゼロなので「ふ~ん((適切でない差分を、適切でないオプションでpatchに食わせ、適切でないファイルに当てようとしたのだな…程度の推測は可能。))」としか言えません。 --多分ですが、その何だか分らないattach_ref.diff.5はattach.inc.php以外に対する差分も含んでいるでしょう。((その差分の中を見れば、まぁ大抵の人には分るでしょう。敢えて書くなら、ファイル名から推測するに、ref.inc.phpへの差分も含んでいそうです。)) --「そもそも~駄目ですか?」…何をやってるのか分らないので、駄目かどうかも分りません。 以上です。 -- &new{2008-01-14 (月) 23:45:38}; - コメントありがとうございます。ファイルはこのページのダウンロードからリンクされている [[attach・refプラグイン改造:http://m-arai.s41.xrea.com/closet/20.html]]のダウンロードの項目から持ってきました。 -- [[のの]] &new{2008-01-15 (火) 22:12:56}; - コマンドは[[ここ:http://www.sip.eee.yamaguchi-u.ac.jp/kou/diff-patch.html]]を参考にしました。 -- [[のの]] &new{2008-01-15 (火) 22:15:33}; - そのattach_ref.diff.5は、はっきりと「1.4.3への差分」と明記されていますね。おそらくあなたは1.4.3は使っていないでしょう。そのファイルはplugin/attach.inc.phpとplugin/ref.inc.php、そしてja.lng、en.lngに対する差分を含んでいます。以上。 -- &new{2008-01-16 (水) 22:18:53}; - ナルホドです。丁寧にありがとうございます。しかし、プラグイン導入もなかなか難しいものですね。勉強になりました。じっくりと試してみたいと思います。 -- [[のの]] &new{2008-01-17 (木) 23:53:54}; - 困りました。1.4.3を手に入れて、挑戦と思ったのですが古いバージョンは全てダウンロードできなくなっていますね。どうしたらいいんでしょうか? -- [[のの]] &new{2008-01-25 (金) 03:08:46}; -- CVSから引っ張ってみましょう。 -- &new{2008-01-25 (金) 03:22:24}; --- [[plugin/attach.inc.php>http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/*checkout*/pukiwiki/pukiwiki/plugin/attach.inc.php?rev=1.39]] (PukiWiki-1.4.3) --- [[plugin/ref.inc.php>http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/*checkout*/pukiwiki/pukiwiki/plugin/ref.inc.php?rev=1.21]] (PukiWiki-1.4.3) - いまさら1.4.3を引っ張り出すのは明らかにナンセンスだと思いますが。このページをちゃんと読んでいるのなら、1.4.7用のパッチを見つけられている筈ですが? -- &new{2008-01-26 (土) 13:36:20}; -- と思ったら、向こうでも既にやってるわけですね。 -- &new{2008-01-26 (土) 13:37:42}; - コメントありがとうございます。でぃあばぁさんのHPで取っ組み中です。 -- [[のの]] &new{2008-01-28 (月) 03:01:21}; #comment