[Rails]使用carrierwave,在上傳圖片時加上文字浮水印和疊加圖片
在專案中遇到需要上傳圖片需要加上文字浮水印和疊加圖片,這邊整理一下做法。
做法是
- 先定義處理圖片的方法
- 使用process引入方法
以下依序介紹文字浮水印和疊加圖片的做法
上傳圖片時加上文字浮水印
接著我們要實作的是上傳圖片時在圖片上加上浮水印。
程式碼
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process :add_watermark
def add_watermark
watermark = "安安,我是浮水印"
manipulate! do |image|
image.combine_options do |c|
# combine_options讓我們可以同時執行多個指令
c.gravity 'Center' # 設定位置在正中央
c.pointsize '30' # 設定文字大小(fontsize)
c.font "#{Rails.root}/public/microsoft_font.ttf" # 如果要使用中文字體必須要引入字體
c.draw "text 0,0 '#{watermark}'" # text格式、象限座標(以gravity為準)、文字內容
c.fill 'white' # 設置字體顏色
end
image
end
end
end
上傳圖片時疊加圖片
程式碼

這樣我們就可以在上傳的圖片上疊上另外一張圖片浮水印。
疊加後的結果(此圖片經過resize處理過):
參考資料
manipulate!
composite
combine_options
使用 CarrierWave 和 MiniMagick 合成多张图片、写文字
用ImageMagick在图片中写中文的问题及解决