tDiary recent_imageプラグイン

概要

tDiaryのimageプラグイン、または image_exプラグインを使ってアップロードした画像ファイルを、新しいものから順に表示します。

ダウンロード

現在の最新バージョンは、Version 2.0.5 : 2014/9/28 です。

Version 2.0.0 から、tDiary Image Gallery の一部として、tDiary contribパッケージに含めてリリースすることにしました。("util/image-gallery/misc/plugin/recent_image.rb")

こちらからどうぞ。→tDiary contribパッケージ

機能

  • imageプラグイン、または image_exプラグインを使ってアップロードした画像ファイルを、新しいものから順に表示します。(古い順に表示するオプションもあります。)
    ※Ver0.3から、画像をランダムに選択して表示するオプションも追加しました。
  • image_exプラグインを使っていて、縮小画像(サムネイル)がある場合はそちらを表示します。(image.rbの手動指定サムネイルには対応していません。すんません。)
  • 表示した画像は、それぞれリンク付きのimgタグになります。画像のリンク先は、(1)画像が貼り付けられた日記、(2)アップロードし た(元)画像、のいずれかを選ぶことができます。さらに、日記に画像を入れた際に指定したタイトルが、そのままimgタグの title属性になります。
  • nameフィルタを正規表現で指定できます。この機能を使うと、特定の文字列をファイル名に含む画像のみを表示します。拡張子として".jpg"を持つものだけを表示したい場合などに使います。
  • titleフィルタを正規表現で指定できます。この機能を使うと、特定の文字列をタイトルに含む画像のみを表示することができます。
  • 「日記を隠す」で隠された日付の画像は表示しない、安心設計になっています:-)。
  • 画像ファイル数をカウントするための「count_imageプラグイン」を用意しました。
  • JPEG形式の画像のEXIFデータを表示する「view_exifプラグイン」を用意しました。
    (recent_image.rb Ver2.0以降に入っています。exifparserのインストールが必要です。)

※下記の「使い方の例」に、これらの機能を組み合わせたいろいろな使い方を説明してありますのでご覧ください。

設定

tdiary.conf への設定項目はありません。

<tDiaryのディレクトリ>/misc/plugin に、ダウンロードした recent_image.rb をコピーして下さい。設定→プラグイン選択、で使用可能になります。

使い方

recent_image:最新画像の表示

recent_image(items, width, link_mode, name_filter, title_filter, reverse, random)
  パラメータ(カッコ[]内は未指定時の値)
    items:     表示する画像の数 [4]
                0 : 制限なし(すべての画像を表示)
    width:     表示画像のpixel幅  [80]
    link_mode: 表示画像のリンク先 [1]
                0 : この画像を表示するImage-GalleryのViewerモード
                1 : この画像を含む日付の日記本文
                2 : アップロードした画像ファイル
                3 : アップロードした画像ファイルを別ウィンドウを開いて表示
                    ウィンドウのサイズを指定する場合、[3, width, height]と、
                    配列で指定する。
                    ex) [3, 640, 480] ... 640*480のウィンドウに表示する
    name_filter: 表示対象とする画像のファイル名(正規表現)
                 この正規表現にマッチする文字列を、ファイル名に含むものだけ
                  が表示対象となる。
               [nil: すべての画像を表示対象とする]
    title_filter: 表示対象とする画像の本文中タイトル(正規表現)
                 この正規表現にマッチする文字列を、タイトルに含むものだけが
                  表示対象となる。
               [nil: すべての画像を表示対象とする]
    reverse:   画像を古いものから表示したい場合「true」を指定する。[false]
    random:    画像をランダムに選び表示したい場合「true」を指定する。[false]
               これをtrueにした場合、reverseパラメータは無視される。

使い方の例

※以下の例はtDiaryスタイルでの書式です。

その1:ヘッダやサイドバーを飾る

ヘッダやサイドバーなどに、次のように指定するだけで、最近アップロードした画像を4枚、幅80ピクセルで表示します。

<%=recent_image %>

以降、新しい画像をimageプラグインで日記に登録するたび、この画像が自動で入れ替わります。

また、アップロードしたすべての画像からランダムに8枚を選んで表示する場合はrandomオプションをtrueに指定し、以下のようにします。

<%=recent_image 8, 80, 1, nil, nil, false, true %>

ブラウザでページのリロードを行うと、新たに画像が選択され表示が切り替わります。



その2:すべての画像でアルバムを作る

次のようにすると、アップロードしてあるすべての画像を表示します。

<%=recent_image 0 %>

使っていない過去の日付(1999/1/1など、適当に…)の日記に、上記のように一行書くだけで、アルバムのようなインデックス・ページを作るこ とができます。この場合は、次のようにnameフィルタと組み合わせて年ごとに表示を分け、さらに古い順に表示させるようにすると、より「それらしく」な るでしょう。

2004年
<%=recent_image 0, 80, 1, "2004", nil, true %>
<hr>
2005年
<%=recent_image 0, 80, 1, "2005", nil, true %>
<hr>

このページにもimageプラグインでの登録があるたびに、新しい画像が追加されてゆきます。



その3:nameフィルタを使い、JPEG形式の画像だけを表示する

PNGやGIF形式の図などを除き、JPEG形式の写真画像(拡張子が".jpeg"または".jpg"のファイル)だけを表示したい場合は、次のようにします。

<%=recent_image 0, 80, 1, "(jpg|jpeg)" %>


その4:nameフィルタを使い、特定の日付の画像だけを表示する

image/image_exプラグインでアップロードしたファイルは、yyyymmdd_nn.xxxというファイル名になります。(yyyy=年, mm=月, dd=日, nn=日付ごとの連番, xxx=拡張子) このことを利用して、以下のような指定ができます。

<%=recent_image 0, 80, 1, "2004" %>

→2004年の画像をすべて表示

<%=recent_image 0, 80, 1, "1225_" %>

→すべての年の12月25日の画像をすべて表示

<%=recent_image 0, 80, 1, "08[0-9]{2}_" %>

→すべての年の8月の画像をすべて表示

<%=recent_image 0, 80, 1, "2005(0429|0430|050[1-5])_[0-9]+\.jpg" %>

→2005年のゴールデンウィーク(4/29〜5/5)中の、JPEG形式の画像をすべて表示

このように、正規表現を使うことによって、いろいろな日付範囲の指定ができます。



その5:titleフィルタを使い、特定のタイトルのものだけを表示する

タイトルに「太郎」または「次郎」を含む画像をすべて表示する場合は、次のように指定します。

<%=recent_image 0, 80, 1, nil, "(太郎|次郎)" %>

※nameフィルタとtitleフィルタを同時に指定した場合は、両方の条件に当てはまる画像のみが表示対象になります。


recent_image.rb に入っているその他のプラグイン

count_image:画像数のカウント

count_image(name_filter, title_filter)
  パラメータ(カッコ[]内は未指定時の値)
    name_filter: カウント対象とする画像のファイル名(正規表現)
                 この正規表現にマッチする文字列を、ファイル名に含むものだけ
                  をカウント対象とする。
               [nil: すべての画像をカウント対象とする]
    title_filter: カウント対象とする画像の本文中タイトル(正規表現)
                 この正規表現にマッチする文字列を、タイトルに含むものだけを
                  カウント対象とする。
               [nil: すべての画像をカウント対象とする]

count_imageプラグインは画像の枚数を表示したい場合に使用します。以下のようにすると、すべての画像とその枚数が表示されます。

<%=recent_image 0 %>
total <%=count_image %> files.


view_exif:JPEG画像のEXIFデータ表示

view_exifプラグインは、JPEG画像のEXIFデータを表示したい場合に使用します。詳しくは、作者の日記を御覧ください。

  Exception Diary「recent_image.rb に EXIF表示機能を追加

view_exifプラグインを使用するには、exifparserの追加インストールが必要です。インストールの方法については、Image Gallery のページを参照してください。

classについて

画像は、<div class="recentimage">…</div>という形でdivタグに囲まれます。cssで見た目を変えたい場合にお使いください。

動作条件

tDiary 3.2.2, 4.0.0〜4.0.5 で確認しています。

セキュア環境は不可です。

履歴

2005/07/01Ver0.1・最初のバージョン
2005/07/05Ver0.2・処理の高速化、reverseパラメータ追加 <公開開始>
2005/09/02Ver0.3・randomオプション追加。link_mode=3(画像を別ウィンドウ表示)オプション追加。
・count_imageプラグイン追加。
・プレビューモード、長年日記で画像が表示されないバグを修正。
2005/10/23Ver1.0Image-Galleryのためのキャッシュ保持機能追加。
・縦長の画像の場合は、widthパラメータで指定された長さを縦サイズに適用するよう変更。
・imageプラグインで title 指定を""で行った場合にも対応。
2005/10/28Ver1.1・キャッシュ・ファイルを使う設定にした場合、起動時に毎回必ずキャッシュ・ファイルを作成していたバグの修正。orz
2005/10/30Ver1.2・キャッシュ・ファイルを使う設定にした場合、日記を更新しても最新画像が更新されないバグの修正。orz
2005/10/31Ver1.3・image_exのサムネイルに対応できていなかった問題を修正。
2005/11/23Ver1.4・一部のjpegファイルの扱いで例外が発生してしまう問題を修正。
・PNG形式、GIF形式の画像サイズが正しく扱えていなかった問題を修正。
2008/03/22Ver1.7・キャッシュ・ファイルがない場合は、オプションの指定に関わらず必ず作成するようにした。詳しくは、Image Galleryの「インストール」及び「履歴」をご覧になってください。
2010/09/30Ver2.0・tDiary 3.0.0以降に正式対応。
・view_exifプラグインを追加。
2012/03/10Ver2.0.2・Ruby 1.9に対応。(kpさんに感謝!)
2013/11/30Ver2.0.3・tDiary 4.0.2 で新たな日記の画像が一覧に追加されないバグを修正。
2014/01/04Ver2.0.4・tDiary 4.0.0 以降でキャッシュ・ファイルを新たに生成しようとすると失敗するバグを修正。(Toshiさんに感謝!)
2014/09/28Ver2.0.5・画像のサイズ取得に fastimage を使うようにした。
・view_exifプラグインを切り出し、view_exif.rb とした。

ご意見、ご感想などは…

こちらまでどうぞ。