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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

2695閲覧

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

Libra189

総合スコア8

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/10/29 12:02

問題

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

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

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

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

該当のソースコード

Ruby

1class ImageUploader < CarrierWave::Uploader::Base 2 include CarrierWave::MiniMagick 3 4 # 画像が破損する 5 process resize_to_limit: [2560, 1920] 6 7 # 破損したサムネ画像が生成される 8 version :thumb do 9 process resize_to_fit: [200, 200] 10 end 11end

試したこと

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

ruby

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

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

Ruby

1class Image < ApplicationRecord 2 mount_uploader :image, ImageUploader 3 4 before_action do 5 self.image.resize_to_limit(2560, 1980) 6 # /public/upload/tmp/~/image.jpgはリサイズ成功 7 # アップロード後の/public/upload/Image/image/1/image.jpgは画像が破損 8 end 9end

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

ミドルウェアバージョン
Ruby2.4.1
Rails5.2.1
Carrierwave1.2.3
MiniMagick4.9.2
ImageMagick6.7.8-9

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問