कनवर्ट करें I Carrierwave
एक छवि के कुछ संस्करणों, एक पीएनजी प्रारूप में, और एक जेपीजी प्रारूप में, लेकिन मुझे इसे काम करने के लिए प्रतीत नहीं होता है। मुझे एहसास है कि यहां और अन्य जगहों पर कई समान प्रश्न पूछे गए हैं, लेकिन मैं समाधान ढूंढने में विफल रहा हूं। मोटे तौर पर, यहाँ मैं क्या है: एक jpg.jpg
नाम दिया, और एक png.png
नामित:कैरियरवेव के साथ समस्या:
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
तो, छवि प्रारूप मैं में पारित के प्रकार की परवाह किए बिना, इस दो फ़ाइलों पैदा करता है। jpg.jpg
वास्तव में हमेशा एक जेपीईजी फ़ाइल है (जैसा कि यूनिक्स के file
कमांड के साथ सत्यापित किया गया है), लेकिन png.png
केवल एक वास्तविक पीएनजी फॉर्मेटेड फ़ाइल है, और केवल अगर मैं मूल रूप से एक पीएनजी-फॉर्मेटेड फ़ाइल में पास करता हूं (जेपीजी स्वरूपित फ़ाइल में जेपीईजी परिणाम में गुजरता है) !
विचार?
यह उपयोगी नहीं हो सकता है, लेकिन मैं Carrierwave
ही संदिग्ध में convert
विधि पाते हैं: convert(some_format)
कॉल manipulate!(:format => some_format)
, जो बारी में कॉल (some_image_object).write("#{some_format}:#{current_path}")
। अब अगर मूल छवि में पास किया गया है bla.format (format = jpg, png, आदि), current_path
के साथ .format का विस्तार है (manipulate!
पर एक बंदर-पैच के माध्यम से परीक्षण किया गया है)। और जिस तरह से छवि प्रारूप रूपांतरण RMagick
में काम करता है वांछित एक्सटेंशन वाले तर्क के साथ write
पर कॉल करके है। तो वास्तव में जेपीजी रूपांतरण वास्तव में क्यों होगा? और यदि हां, तो पीएनजी रूपांतरण क्यों विफल हो जाएगा?
इसके अलावा, अगर यह उपयोगी है, मैं ऑन रेल्स 3.0.9 और 0.5.6 Carrierwave
धन्यवाद हूँ!
धन्यवाद, आपने मेरी रात –
बचाई है कोई भी इस जवाब को देखकर इसे पढ़ सकता है: http://stackoverflow.com/questions/19625066/carrierwave-rmagick-not-removing-transparency-in-convert-to-jpg – JakeTheSnake