2017-10-15  ruby  graphics  web  rmagick 

画像をバナーサイズに切り取りメッセージ付きでロゴを埋め込むRubyスクリプト(RMagickを使う)

元画像(input.jpg)

Good vs. Evil photo by Tom Barrett (@wistomsin) on Unsplash

ロゴ画像(logo.png)

実行結果(output.jpg)

$ mm-make-banner input.jpg output.jpg "Background image by Tom Barrett / Unsplash.com"

スクリプト

#!/usr/bin/env ruby

FONT = '/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf'
LOGO_IMAGE = 'logo.png'

require 'fileutils'
require 'RMagick'
 
if ARGV.length != 3
  puts "Usage: mm-make-banner input.jpg output.jpg \"Embedded Message\""
  abort
end

input_filename = ARGV[0]
output_filename = ARGV[1]
message = ARGV[2]

image = Magick::Image.read(input_filename).first
image = image.resize_to_fill(1280, 528)

logo = Magick::Image.read(LOGO_IMAGE).first
logo = logo.resize_to_fill(300, 300)
image.composite!(logo, Magick::CenterGravity, Magick::OverCompositeOp)

draw = Magick::Draw.new

# Shadow
draw.annotate(image, 0, 0, 4, 4, message) do
  self.font = FONT
  self.fill = 'black'
  self.stroke = 'transparent'
  self.pointsize = 16
  self.gravity = Magick::SouthEastGravity
end

# Message
draw.annotate(image, 0, 0, 5, 5, message) do
  self.font = FONT
  self.fill = 'gray'
  self.stroke = 'transparent'
  self.pointsize = 16
  self.gravity = Magick::SouthEastGravity
end

image.write(output_filename)

参考

このエントリに関連した作業をしているときのツイート

RubyのRMagickで縦横比固定でリサイズしたり切り抜いたり - アインシュタインの電話番号

画像にロゴを埋め込むRubyスクリプト(RMagickを使う)

RMagick/ImageMagickで位置決めをする Gravityの挙動まとめ - Loud Minority

 2017-10-15  ruby  graphics  web  rmagick