ImageMagick&FFMPEG

【Carrierwave + ImageMagick】translation missing: ja.errors.messages.mini_magick_processing_error

2021/01/14

問題

本番環境を構築した際に, 以下のようなレスポンスが返ってくるようになった.

{
    "status": 500,
    "message": "バリデーションに失敗しました: Post image urltranslation missing: ja.errors.messages.mini_magick_processing_error"
}

上記のエラーが出る理由は2つ

  1. mini_magickのエラーの日本語訳がなく, 変換エラーが起きている
  2. そもそもImageMagickがうまく画像を変換できず, mini_magickのエラーが発生している

解決策(変換エラーを直す)

config/locales/ja.yml に, mini_magickのエラーの日本語訳を追加する.

ja:
  errors:
    messages:
      carrierwave_processing_error: 処理できませんでした
      carrierwave_integrity_error: は許可されていないファイルタイプです
      carrierwave_download_error: はダウンロードできません
      extension_white_list_error: "%{extension}ファイルのアップロードは許可されていません。アップロードできるファイルタイプ: %{allowed_types}"
      extension_black_list_error: "%{extension}ファイルのアップロードは許可されていません。アップロードできないファイルタイプ: %{prohibited_types}"
      rmagick_processing_error: "rmagickがファイルを処理できませんでした。画像を確認してください。エラーメッセージ: %{e}"
      mime_types_processing_error: "MIME::Typesのファイルを処理できませんでした。Content-Typeを確認してください。エラーメッセージ: %{e}"
      mini_magick_processing_error: "MiniMagickがファイルを処理できませんでした。画像を確認してください。エラーメッセージ: %{e}"

こうすることで, 実際のエラー内容を確認することができるようになる.


{
    "status": 500,
    "message": "バリデーションに失敗しました: Post image urlMiniMagickがファイルを処理できませんでした。画像を確認してください。エラーメッセージ: `magick identify /tmp/mini_magick20210114-12404-1ge0p8r.jpg` failed with error:\nidentify: delegate library support not built-in '/tmp/mini_magick20210114-12404-1ge0p8r.jpg' (XML) @ error/profile.c/ValidateXMPProfile/1927.\n"
}

解決策(ImageMagickで変換できるようにする)

まずはImageMagickのDelegates情報を確認する.

■ Staging

convert -version
Version: ImageMagick 7.0.10-48 Q16 x86_64 2020-12-14 https://imagemagick.org
Copyright: © 1999-2020 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): bzlib freetype jng jpeg lzma png tiff x xml zlib

■ Production

convert -version
Version: ImageMagick 7.0.10-57 Q16 x86_64 2021-01-11 https://imagemagick.org
Copyright: © 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): lzma zlib

僕の場合は, jpeg, png, xmlなどのライブラリが入っていないことがわかる.
なので, 各種ライブラリをインストールした後, 再度コンパイル/インストールを行う.

$ sudo yum install -y zlib-devel libjpeg-turbo-devel libpng-devel freetype-devel libtiff-devel libxml2-devel
$ cd 【ImageMagickを解凍(展開)したディレクトリ】
$ sudo ./configure

ここで, configureコマンドの実行結果からdelegateにjpeg, png, xmlなどのライブラリが入っていることがあるか確認

$ sudo make
$ sudo make install
$ convert -version

本番環境でもちゃんと必要なライブラリが利用できることが確認でき,
実際のAPIも正しく動くにようになった.

Version: ImageMagick 7.0.10-57 Q16 x86_64 2021-01-14 https://imagemagick.org
Copyright: © 1999-2021 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP(4.5)
Delegates (built-in): bzlib freetype jng jpeg lzma png tiff xml zlib

Twitterフォロー待ってます!