如何使用 carrierwave/minimagick composite 将我的标志放在每张上传图片的东南角?
How to use carrierwave/minimagick composite to put my logo on the southeast corner of every image uploaded?
我有一个模型可以让用户使用载波上传图片。我想将我的徽标放在每张图片的东南角,然后我希望图片像往常一样保存(示例。com/images/1)。我知道我必须使用复合材料,但尽管谷歌搜索了几个小时,但我离这还差得很远。这是我最好的猜测。
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_limit: [400, 400]
process :logo
def logo
manipulate! do |img|
logo = ::MiniMagick::Image.open("#{Rails Name}/app/assets/images/logo.png")
img = img.composite(logo, Magick::SouthEastGravity, 15, 0, Magick::OverCompositeOp)
end
end
我相信你可以改变这条线
process resize_to_limit: [400, 400]
到这个
process resize_to_limit: [400, 400, 'SouthEast']
然后你可能需要也可能不需要你添加的关于重力的一些额外的 minimagick 代码。
process :watermark
def watermark
second_image = MiniMagick::Image.open("https://s3.amazonaws.com/....logo.png")
manipulate! do |img|
img.composite(second_image) do |c|
c.compose "Over" # OverCompositeOp
c.gravity "Southeast" # copy second_image onto first_image from (20, 20)
end
end
end
成功了。
我有一个模型可以让用户使用载波上传图片。我想将我的徽标放在每张图片的东南角,然后我希望图片像往常一样保存(示例。com/images/1)。我知道我必须使用复合材料,但尽管谷歌搜索了几个小时,但我离这还差得很远。这是我最好的猜测。
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process resize_to_limit: [400, 400]
process :logo
def logo
manipulate! do |img|
logo = ::MiniMagick::Image.open("#{Rails Name}/app/assets/images/logo.png")
img = img.composite(logo, Magick::SouthEastGravity, 15, 0, Magick::OverCompositeOp)
end
end
我相信你可以改变这条线
process resize_to_limit: [400, 400]
到这个
process resize_to_limit: [400, 400, 'SouthEast']
然后你可能需要也可能不需要你添加的关于重力的一些额外的 minimagick 代码。
process :watermark
def watermark
second_image = MiniMagick::Image.open("https://s3.amazonaws.com/....logo.png")
manipulate! do |img|
img.composite(second_image) do |c|
c.compose "Over" # OverCompositeOp
c.gravity "Southeast" # copy second_image onto first_image from (20, 20)
end
end
end
成功了。