MiniMagick Gem:如何在没有文件的情况下创建新的空白图像?

时间:2015-01-08 22:21:01

标签: ruby-on-rails minimagick

我想将两张图片(一张背景图片,一张文字图片)合并为一张大图片。

我相信我已经完成了背景图片,因为它只是基于一个文件。但是,我无法尝试从头开始创建图像。有什么提示吗?

image = MiniMagick::Image.open("public/text_response_bg.png")
image.combine_options do |i|
  i.size "1024x512"
end

text = MiniMagick::Image.new #<-- does not work
text.combine_options do |i|
  i.size "700x200"
  i.gravity 'center'
  i.fill 'white'
  i.caption 'blahblahblah'
end

result = image.composite(text) do |c|
  c.compose "Over"
  c.geometry "+20+20"
end

2 个答案:

答案 0 :(得分:5)

使用以下Ruby代码从头开始创建图像:

// this should be in the main page
$window.addEventListener('storage', function(event) { 
  if(event.key === 'login-notification') {
    // got it!
    // you can get the value from 
    // the notification with "event.newValue"
  }
}, false);

// send the event with just a setItem from the popup
$window.localStorage.setItem('login-notification', 'ayy');

答案 1 :(得分:2)

MiniMagick提供了一种方法MiniMagick::Image.create来创建新图片,但似乎无法使用this issues

使用ImageMagick主命令可以创建纯色图像,如

convert -size 800x600 xc:"#ffffff" write.jpg

因此,如果不介意使用系统命令创建图像,您可以这样做:

cmd = "convert -size 800x600 xc:'#ffffff' WRITE_IMAGE.jpg"
system(cmd)

更新:我使用MiniMagick 3.8.0,并且看到最新版本4.0.1有一个MiniMagick::Shell类,认为它可以直接运行该自定义ImageMagick命令。