Mi piacerebbe che lo Carrierwave
producesse alcune versioni di un'immagine, una in formato png e una in formato jpeg, ma non riesco a farla funzionare. Mi rendo conto che molte domande simili sono state poste sia qui che altrove, ma non sono riuscito a trovare una soluzione. Grosso modo, ecco cosa ho:Problemi con Carrierwave: conversione
class MyUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
version :jpeg do
process :convert => 'jpg'
# more procesors
process :processed => :jpg
end
version :png do
process :convert => 'png'
# more processors
process :processed => :png
end
def store_path(for_file = filename)
if version_name != :png
return "#{version_name}.jpg"
else
return "#{version_name}.png"
end
end
def filename
filename = if version_name != :png
super != nil ? super.split('.').first + '.jpg' : super
else
super != nil ? super.split('.').first + '.png' : super
end
end
end
Quindi, indipendentemente dal tipo di formato di immagine mi passa, questo produce due file: uno di nome jpg.jpg
, e uno di nome png.png
. jpg.jpg
è in realtà sempre un file JPEG (come verificato con il comando di Unix), MA png.png
è solo un vero file formato PNG se e solo se originariamente passo in un file formato png (passando in un file jpeg si ottiene un file in formato jpeg) !
Idee?
questo potrebbe non essere utile, ma trovo il metodo convert
in Carrierwave
per sé sospetto: convert(some_format)
chiamate manipulate!(:format => some_format)
, che a sua volta chiama (some_image_object).write("#{some_format}:#{current_path}")
. Ora se l'immagine originale passata è bla.format (formato = jpg, png, ecc.), current_path
con un'estensione di .format (testato tramite una patch di scimmia su manipulate!
). E il modo in cui la conversione del formato immagine funziona in RMagick
è chiamando write
con un argomento che ha l'estensione desiderata. Quindi, perché la conversione jpeg qui sopra avrebbe effettivamente luogo? E se sì, perché la conversione png fallirebbe?
Inoltre, se è utile, io sono on Rails 3.0.9 e 0.5.6 Carrierwave
Grazie!
grazie, hai salvato la mia notte –
Chiunque guardi questa risposta può leggere questo: http://stackoverflow.com/questions/19625066/carrierwave-rmagick-not-removing-transparency-in-convert-to-jpg – JakeTheSnake