2016-01-06 1 views
0

J'ai un modèle qui permet aux utilisateurs de télécharger des images en utilisant carrierwave. Je veux placer mon logo dans le coin sud-est de chaque image et je veux que l'image soit sauvegardée comme d'habitude (example.com/images/1). Je sais que je dois utiliser du composite mais malgré plusieurs heures de recherche, je ne suis nulle part plus proche. C'était ma meilleure estimation.Comment utiliser le composite carrierwave/minimagick pour placer mon logo sur le coin sud-est de chaque image téléchargée?

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 

Répondre

0

Je crois que vous pouvez simplement changer cette ligne

process resize_to_limit: [400, 400] 

à cette

process resize_to_limit: [400, 400, 'SouthEast'] 

Et vous pouvez ou non besoin d'un peu de ce code de minimagick supplémentaire que vous ajoutiez sur la gravité .

0
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 

J'ai commencé à travailler.