title: Carrierwave RMagick not removing transparency in convert to jpg
body: <p>I'm trying to upload a PNG and save a bunch of thumbnails. The thumbnails should all be JPG and not have any transparency. Somehow the file is saved as jpg but it has transparency...</p>
  
  <p>Here's my Uploader:</p>
  
  <pre><code># encoding: utf-8
  
  class WinePhotoUploader &lt; CarrierWave::Uploader::Base
  
      # Include RMagick or MiniMagick support:
      include CarrierWave::RMagick
      # include CarrierWave::MiniMagick
  
      # Choose what kind of storage to use for this uploader:
      storage :file
      # storage :fog
  
      # Override the directory where uploaded files will be stored.
      # This is a sensible default for uploaders that are meant to be mounted:
      def store_dir
      "assets/wines/#{version_name}"
      end
  
      CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:]\.\-\+]/
  
      # Provide a default URL as a default if there hasn't been a file uploaded:
      def default_url
      # For Rails 3.1+ asset pipeline compatibility:
      ActionController::Base.helpers.asset_path("pages/wines/#{version_name}/default.png")
      end
  
      process :for_all
      process :convert =&gt; 'jpg'
  
      version :croppable, :if =&gt; :new_upload? do
      process :resize_and_pad =&gt; [1200, 1200, 'white']
      end
  
      version :show, :if =&gt; :new_upload? do
      process :resize_to_fit =&gt; [nil, '425']
      end
  
      version :general, :from_version =&gt; :show, :if =&gt; :new_upload? do
      process :resize_and_pad =&gt; [150, 375, 'white']
      end
  
      version :thumb, :from_version =&gt; :croppable, :if =&gt; :cropping? do
      process :rotate_to =&gt; [-30]
      process :crop_via_model
      process :resize_to_fit =&gt; [150, 150]
      end
  
      def for_all
      manipulate! do |img|
          img.trim
          img.gravity = Magick::CenterGravity
  
          # I only use these two because this shit isn't working...these don't seem to help!
          # Neither does the flatten method...even though other posts on stackoverflow.com say
          # that it works.
          img.background_color = 'white'
          img.alpha Magick::OpaqueAlphaChannel
  
          img.unsharp_mask 0.3, 0.3, 5, 0
          img
      end
      end
  
      def extend_to(w, h)
      manipulate! do |img|
          img.gravity = Magick::CenterGravity
          img.extent w, h
          img
      end
      end
  
      def rotate_to(deg)
      manipulate! do |img|
          img.gravity = Magick::CenterGravity
          img.distort Magick::ScaleRotateTranslateDistortion, deg
          #img.repage # WTF?!?!?!? No repage method?!
          img
      end
      end
  
      def crop_via_model
      manipulate! do |img|
          img.gravity = Magick::CenterGravity
          img.crop model.crop_x.to_i, model.crop_y.to_i, model.crop_w.to_i, model.crop_h.to_i
          img
      end
      end
  
      def flatten
      manipulate! do |img|
          img_list = Magick::ImageList.new
          img_list.from_blob img.to_blob
          img_list.new_image(img_list.first.columns, img_list.first.rows) { self.background_color = "white" } # Create new "layer" with white background and size of original image
          img = img_list.reverse.flatten_images
          img
      end
      end
  
      def new_upload? picture
      !model.cropping?
      end
      def cropping? picture
      model.cropping?
      end
  
      # Add a white list of extensions which are allowed to be uploaded.
      # For images you might use something like this:
      def extension_white_list
      %w(jpg jpeg gif png tif)
      end
  
      # Override the filename of the uploaded files:
      # Avoid using model.id or version_name here, see uploader/store.rb for details.
      def filename
      "#{ model.get_permalink(:normalized =&gt; true) }.jpg"
      end
  
      # Remove this when https://github.com/carrierwaveuploader/carrierwave/issues/1164 is solved.
      def recreate_versions!(*versions)
      if versions.any?
          from_versions = versions.group_by { |v| self.class.versions[v][:options][:from_version] }
          from_versions.each do |from, versions|
          next if from.nil?
          file = CarrierWave::SanitizedFile.new(self.versions[from.to_sym].file)
          store_versions!(file, versions)
          end
      else
          super(*versions)
      end
      end
  
  end
  </code></pre>
  
  <p>Oh...and apparently carrierwave doesn't seem to want to log anything so I can't tell what it's doing.</p>