月別アーカイブ: 2017年9月

RedmineのMarkdownで画像サイズを指定できるようにした

こんにちは、Sayahamittです。

研究室のwikiとしてRedmineを使い始めたはいいものの、wikiでMarkdown記法を使うようにすると、記事中に掲載する画像サイズを指定できないという問題に行き当たりました。
wikiに掲載する画像をいちいち画像編集ソフトでリサイズするのは億劫なので、Redmineのソースコードに手を加えて対応しました。

以下の手順でRedmineのwikiでMarkdown記法でも画像サイズを指定できるようになります。

1. Redimineのルートディレクトリを調べる(私の環境では”/var/lib/redmine/lib/redmine/”)

2. redmine/lib/redmine/wiki_formatting/markdown/formatter.rb 内、HTMLクラス内、imageメソッドを以下のように編集する。

    def image(link, title, alt_text)
      return unless uri_with_safe_scheme?(link)
      if link =~ /^(.+?)\s*=+(\d+)(?:px|)$/
        # e.g. ![alt](url.png =100px)
        # e.g. ![alt](url.png =100)
        %(<img src="#{$1}" style="max-width: #{$2}px" alt="#{alt_text}">)
      elsif link =~ /^(.+?)\s*=+(\d+)(?:px|)x(\d+)(?:px|)$/
        # e.g. ![alt](url.png =30x50)
        %(<img src="#{$1}" style="max-width: #{$2}px; max-height: #{$3}px;" alt="#{alt_text}">)
      else
        %(<img src="#{link}" title="#{title}" alt="#{alt_text}">)
      end
    end

3.redmine/tmp に restart.txt を作成し、ブラウザでRedmineにアクセス (Redmine再起動)

 

以上の手順を実行すると、以下のMarkdown記法で画像サイズを指定できます

!(タイトル)[画像ファイル名(uri) =横幅]
!(タイトル)[画像ファイル名(uri) =横幅px]
!(タイトル)[画像ファイル名(uri) =横幅x縦幅]
!(タイトル)[画像ファイル名(uri) =横幅pxx縦幅px]

上記のrubyコードは以下に示すredcarpetのGithubに建てられているissueスレッドを参照しました。適用先となるRedmineの当該ファイルのGithubページも列挙しておきます。
redcarpet issue 487 “Image resizing”
Redmine “lib/redmine/wiki_formatting/markdown/formatter.rb”