1

我在 Snow Leopard 上使用 RMagick 2.12.2 和 ImageMagick 6.5.6-10。我正在尝试在一组照片上添加标题,并且我正在使标题正常工作(即它出现在图像上),但我无法让重力参数正常工作。

无论我将其设置为什么,我最终都会对 NorthGravity 产生一些变化。

例如:将其设置为 SouthWestGravity 会给我 NorthWestGravity。将其设置为 SouthEastGravity 会给我 NorthEastGravity。将其设置为 CenterGravity 会给我 NorthGravity。

换句话说,我无法让标题从图像顶部掉下来。

我会考虑使用“注释”,但我需要“标题”,这样每个图像的冗长标题文本就会换行。

我究竟做错了什么?

这是代码:

#!/usr/bin/env ruby

require "rubygems"
require "yaml"
require "RMagick"
include Magick

base_dir = "/Users/mike/Desktop/caption_test"

photo_log = File.open("#{base_dir}/photo_log.yaml" )

YAML::load_documents(photo_log) do |doc|

  caption = doc["photo-caption"]
  filename = doc["file"]

  canvas = ImageList.new.from_blob(open("#{base_dir}/#{filename}") { |f| f.read } )

  canvas << Magick::Image.read("caption:#{caption}") { 
  self.gravity = SouthWestGravity
  self.size = "#{canvas.first.columns}"
  self.font = "Helvetica Neue"
  self.pointsize = 12
  self.background_color = "#fff"
 }.first

 canvas.flatten_images.write("#{base_dir}/images/#{filename}")

end
4

2 回答 2

1

你可能早就离开了,但我找到了一个非常简单的答案——使用

canvas.append(true).write("#{base_dir}/images/#{filename}")

换句话说,您需要 append 选项(使用 'true' 垂直堆叠)。

于 2010-12-22T16:51:32.983 回答
0

我认为您的问题是您将重力应用于标题图像的尺寸,而不是基础图像的尺寸。您的标题将在其宽度内东/西对齐,但因为它使其具有自己的高度,所以北/南总是意味着北。

您可能想在 flatten_images 调用上指定重力,而不是看起来可能......

于 2013-02-01T16:06:58.083 回答