質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

[Rails]CarrierwaveとMiniMagickを使用した画像圧縮

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 1,186

Libra189

score 8

 問題

RailsでCarrierwaveとMiniMagickを使った画像のりサイズ、圧縮処理をしています。
しかし、リサイズした際に画像が破損してしまいます。
オリジナル画像のリサイズ時に破損しているらしくサムネ画像も同じように破損しています。

下記の記事のように破損するとあるのですが、バージョン等が記載していないので、
この現象は未解決バグなのかわかりません。
どなたか情報をお持ちでしたら共有お願いいたします。

Rails CarrierWaveで画像をリサイズする
Rails MiniMagickの使い方

別名にて保存するとリサイズに成功するのですが、既に運用しているシステムの改修のためファイル名の規則を変更することができません。
リサイズし上書き保存できる方法はないでしょうか?

 該当のソースコード

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick

  # 画像が破損する
  process resize_to_limit: [2560, 1920]

  # 破損したサムネ画像が生成される
  version :thumb do
    process resize_to_fit: [200, 200]
  end
end

 試したこと

1.MiniMagickのみをincludeしたRubyスクリプトを作成した場合は同名でリサイズすることができました。

include 'mini_magick'
img = MiniMagick::Image.open('image.jpg')
img.resize('2560x1980')
image.write('image.jpg') # 成功

2.Carrierwaveでリサイズせずにmount_uploaderを追記したmodelのbefore_actionでリサイズした場合、サムネ画像は正常にリサイズすることができましたが、オリジナル画像は破損してしまいました。
またデバッグを使用して処理を追っていると/public/upload/tmp/~/image.jpgのは正常にリサイズできていることを確認しました。
(Carrierwaveのアップロードで破損している?)

class Image < ApplicationRecord
  mount_uploader :image, ImageUploader

  before_action do
    self.image.resize_to_limit(2560, 1980)
    # /public/upload/tmp/~/image.jpgはリサイズ成功
    # アップロード後の/public/upload/Image/image/1/image.jpgは画像が破損
  end
end

 補足情報(FW/ツールのバージョンなど)

ミドルウェア バージョン
Ruby 2.4.1
Rails 5.2.1
Carrierwave 1.2.3
MiniMagick 4.9.2
ImageMagick 6.7.8-9
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる