【问题标题】:RMagick convert image with alphaRMagick 使用 alpha 转换图像
【发布时间】:2020-01-03 20:01:25
【问题描述】:

我正在尝试通过 RMagick 将图像转换为 25% 的不透明度。以下从命令行工作,但我不知道如何在 Ruby 中执行此操作。

convert input.png -alpha on -channel A -evaluate set 25% +channel output.png

我尝试过使用Magick::AlphaChannelType::ActivateAlphaChannel,但不知道如何将命令链接在一起。任何帮助将不胜感激!

【问题讨论】:

    标签: rmagick


    【解决方案1】:

    请试试这个功能来解决你的问题

     def watermark(opacity = 0.25, size = 'input')
        manipulate! do |img|
          logo = Magick::Image.read("#{Rails.root}/app/assets/images/{size}.png").first
          logo.alpha(Magick::ActivateAlphaChannel) 
    
          white_canvas = Magick::Image.new(logo.columns, logo.rows) { self.background_color = "none" }
          white_canvas.alpha(Magick::ActivateAlphaChannel)
          white_canvas.opacity = Magick::QuantumRange - (Magick::QuantumRange * opacity)
    
          # Important: DstIn composite operation (white canvas + watermark)
          logo_opacity = logo.composite(white_canvas, Magick::NorthWestGravity, 0, 0, Magick::DstInCompositeOp)
          logo_opacity.alpha(Magick::ActivateAlphaChannel)
    
          # Important: Over composite operation (original image + white canvas watermarked)
          img = logo.composite(logo_opacity, Magick::NorthWestGravity, 0, 0, Magick::OverCompositeOp)
        end
      end
    

    【讨论】:

    • 没关系,先转换为 PNG,然后再应用您的转换工作!
    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多