私はBase64でエンコードされた画像をRoRアプリケーションにアップロードしています。私が画像を受け取ったとき、それはrgbのカラースキーム(正しい)を持っています。私がクリップにgemをアップロードするファイルに画像を書き込むと、画像のカラースキームはrgbからグレースケールに変わります。ここでRuby + RMagick + base64画像+ GrayScaleからのRGB変換が機能しません
コードです:
カラースキームはグレーです:
source = src.gsub(/^data:image\/(png|jpg|jpeg);base64,/,"")
blob = Base64.decode64(source)
img = Magick::Image.from_blob(blob).first
img.colorspace = Magick::SRGBColorspace
img.add_profile "#{Rails.root.to_s}/lib/color_profiles/RGB.icc"
img.write(url = "#{Rails.root.to_s}/tmp/#{self.id}_logo.png")
image = File.open(url)
IMGが、私は結果作成されたファイルをチェックすると、正しくRGB画像です。
追加情報: アップロードされた画像はすべて白黒の黒ですが、同じ画像を赤い背景でアップロードすると、最終的な画像は正しくRGB画像になります。
すべてのチャネルの値は同じですか?それはすべての3つのチャネルは同じですか?もしそうなら、それはimagemagickのバージョンとファイルがどのように作成されたかによっても可能です。 ImageMagickのどのバージョンを使用していますか?アップロードされた画像はオリジナルのように見えますか?オリジナルに色が付いていると仮定すると、アップロードされたバージョンは同じように見えるか、グレーになります。 – fmw42
こんにちは、私はImageMagick 6.7を使用しています。図7-10に示すように、アップロードされた画像は元の画像よりも明るく、たとえば、背景#242424(元の画像)はアップロードされた画像の#303030になります。ありがとう – marco