当我通过remote_XXX_url上传没有背景的.png文件时,预期会出现以下上传程序:thumb版本使用resize_to_fit转换为黑色背景。
上传的原始文件与原始文件相同,背景为透明。
如果我通过file_input上传图像,则不会出现此问题。
因此我推断这个问题只发生在对remote_XXX_url文件进行resize_to_XX转换时。你知道发生了什么吗?
carrierwave(2.2.2)-- mini_magick(4.11.0)--原始图像有一个透明的背景。
使用的图像:https://whirlpool-cdn.thron.com/delivery/public/thumbnail/whirlpool/pi-81b54ac7-7614-4a32-bdd1-a3f79db530d5/sckne7/std/320x320/859791401010.jpg?fill=zoom&fillcolor=rgba:255,255,255&scalemode=product
x1c 0d1x缩略图图像已调整大小以适合
未调整大小的图像
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
def store_dir
"#{ENV['AWS_S3_BUCKET_NAME']}/#{model.class.to_s.underscore}/#{model.id}"
end
def extension_allowlist
%w(jpg jpeg gif png svg webp)
end
version :thumb do
process resize_to_fit: [150, 150]
end
def filename
@name ||= "#{mounted_as}_#{timestamp}.#{file.extension}" if original_filename.present?
end
def timestamp
var = :"@#{mounted_as}_timestamp"
model.instance_variable_get(var) or model.instance_variable_set(var, Time.now.to_i)
end
end
1条答案
按热度按时间kjthegm61#
原始文件的扩展名似乎为
.jpg
,但实际上包含PNG图像。ImageMagick本身就很聪明,能够发现这一点,而且不会给你带来任何麻烦。我不知道也不会使用
carrierwave
,但它似乎继承了原来的.jpg
扩展,并迫使ImageMagick编写一个JPEG,这将使透明区域变黑。我认为是这一行: