Tôi muốn Carrierwave
để tạo ra một vài phiên bản của hình ảnh, một ở định dạng png và một ở định dạng jpeg, nhưng tôi không thể làm cho nó hoạt động. Tôi nhận ra một số câu hỏi tương tự đã được hỏi cả ở đây và ở nơi khác, nhưng tôi đã thất bại trong việc tìm một giải pháp. Đại khái, đây là những gì tôi có:Sự cố với Carrierwave: chuyển đổi
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
Vì vậy, không phụ thuộc vào loại định dạng hình ảnh tôi vượt qua trong, điều này tạo ra hai tập tin: một trong những tên jpg.jpg
, và một trong những tên png.png
. jpg.jpg
thực sự luôn là tệp JPEG (như được xác minh bằng lệnh file
của Unix), NHƯNG png.png
chỉ là tệp PNG được định dạng đúng nếu và chỉ khi ban đầu tôi chuyển vào tệp png-formated (chuyển vào kết quả jpeg trong tệp có định dạng jpeg) !
Ý tưởng?
này có thể không có ích, nhưng tôi tìm ra phương pháp convert
trong Carrierwave
bản thân đáng ngờ: convert(some_format)
cuộc gọi manipulate!(:format => some_format)
, nó sẽ gọi (some_image_object).write("#{some_format}:#{current_path}")
. Bây giờ nếu hình ảnh ban đầu được truyền vào là bla.format (định dạng = jpg, png, v.v.), current_path
có phần mở rộng của .format (được kiểm tra qua một miếng vá khỉ trên manipulate!
). Và cách chuyển đổi định dạng hình ảnh hoạt động trong RMagick
bằng cách gọi số write
với đối số có tiện ích mở rộng mong muốn. Vậy tại sao chuyển đổi jpeg ở trên thực sự xảy ra? Và nếu vậy, tại sao chuyển đổi png sẽ thất bại?
Ngoài ra, nếu nó hữu ích, tôi đang ở trên Rails 3.0.9 và Carrierwave 0.5.6
Cảm ơn!
cảm ơn, bạn đã lưu đêm của tôi –
Bất kỳ ai khác nhìn vào câu trả lời này đều có thể đọc: http://stackoverflow.com/questions/19625066/carrierwave-rmagick-not-removing-transparency-in-convert-to-jpg – JakeTheSnake