主にステマブログ

ガチャメーカーについてのブログです。つれづれなるままにひぐらし

railsでサムネイル作ってDBに登録する

サムネイル作ってDBに登録するまでのお話。

そのためにImageMagic入れたんだった。

でもImageMagic単独だとrailsで使えない(知らんかった)。どうする?

 

候補は、ImageMagicと以下の組み合わせ。

Rmagick、PaperClip、MiniMagick

検討した結果、MiniMagickにした。

 

1.Rmagickをためす

とかいいつつ、環境構築失敗して、Rmagickは断念した。(ためせてない)

ソースからコンパイルとか、いろいろやったけど結局無理。

結構インストールに癖があるみたいで、rmagickのインストールトラブルの書き込みは、linux含め多かった。

こんなエラーがでるよ。(でたよ)

ERROR: Failed to build gem native extension.

*** extconf.rb failed ***

extconf failed, exit code 1

ImageMagicとRMagickの相性もあるみたいで、バージョンとかちゃんとあわさんと

あかんみたい。このサイトに詳しくのってて、これを見たらできそうな気がした・・

RMagick を Windows 7 にインストールする方法 - 君の瞳はまるでルビー - Ruby 関連まとめサイト

けど、centosで環境構築するときに苦労しそうなので、パスして他の方法を探した。

 

2.PaperClipを検討

ファイルを扱うにはいいんだろうけど、ファイルからサムネイル作って

イメージをバイナリでDB登録するにはどうしたらいいか、イメージがわかなかった。

よって、パス。

 

3.やっとMiniMagickを入れる

そんなこんなでminimagickさまに頼ることにした。

minimagickは、rmagickをちっちゃく(軽量に)したかんじ?でrmagickのメモリリークのバグとかが治っているらしい。そんな多機能でなくていいのでこれでよさそう。

 

導入はエラーなくいけた。

gem install mini_magickして、GemFileに

gem 'mini_magick'

てかいて、bundle install。さっくり。

 

で、結局どう使うん?miniMagickは、RMagickと比較して情報量が少ない。

apiのリファレンスもなさそうなので(あるのかもしれないが)、あきらめてgithubのソース読むことにした。

ソース読んで仕様理解するとか、仕事じゃいっちゃんやっちゃいけんことやん。

(とは思ったのですが、このやり方が主なのでしょう)

 

実装イメージ(一部抜粋)

    require 'mini_magick'

   # まず、アップロードしたActionDispatch::Http::UploadFileから
    # バイナリデータを取り出す。
    self.image = image.read               
   
    # MiniMagickのインスタンス作る
    thumb = MiniMagick::Image.read(self.image)

  # リサイズ。THUMB_SIZE = "100x100".freeze
    # ちゃんとファイルサイズもちっちゃくなってた。
    thumb.resize(THUMB_SIZE)

    # インスタンスにセット
    self.thumb = thumb.to_blob

f:id:ylang365:20140115181420j:plain

さきなが・・

ローカルのgitに差分登録しとけば、やり方忘れることはないだろう・・たぶん