Ruby Can';不要让重力作用于RMagick和';标题';

Ruby Can';不要让重力作用于RMagick和';标题';,ruby,imagemagick,rmagick,Ruby,Imagemagick,Rmagick,我正在雪豹上使用RMagick 2.12.2和ImageMagick 6.5.6-10。我试图在一组照片上添加标题,我正在使标题正常工作(即,它出现在图像上),但我无法使重力参数正常工作 不管我把它设置成什么,我最终会在北重力上有一些变化 例如:将其设置为“西南重力”将为我提供西北重力。将它设置为东南重力会给我东北重力。将其设置为“中心重力”可以使我获得北重力 换句话说,我无法将标题从图像顶部降下来 我会考虑使用“注释”,但我需要“字幕”,所以每个图像的长标题文字都会被包装。 我做错了什么 代码

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

不管我把它设置成什么,我最终会在北重力上有一些变化

例如:将其设置为“西南重力”将为我提供西北重力。将它设置为东南重力会给我东北重力。将其设置为“中心重力”可以使我获得北重力

换句话说,我无法将标题从图像顶部降下来

我会考虑使用“注释”,但我需要“字幕”,所以每个图像的长标题文字都会被包装。

我做错了什么

代码如下:

#!/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
#/usr/bin/env ruby
需要“rubygems”
需要“yaml”
需要“RMagick”
包括Magick
base_dir=“/Users/mike/Desktop/caption_test”
photo_log=File.open(“#{base_dir}/photo_log.yaml”)
YAML::加载文档(照片日志)do |文档|
标题=文件[“照片标题”]
文件名=文件[“文件”]
canvas=ImageList.new.from_blob(打开(“#{base_dir}/#{filename}”){| f | f.read})

canvas您可能已经离开很久了,但是我找到了一个非常简单的答案——使用


换言之,您需要append选项(使用'true'垂直堆叠)。

您可能已经离开很久了,但是我找到了一个非常简单的答案——使用


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

我认为您的问题在于您将重力应用于标题图像的维度,而不是底层图像的维度。您的标题将在其宽度范围内东/西对齐,但因为它具有自己的高度,所以北/南始终表示北


您可能希望在展平图像调用上指定重力,这看起来是可能的…

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

您可能想在flatte_images调用中指定重力,这看起来是可能的…

您是否要导入反重力。。。抱歉,语言错误。您是否导入了反重力
。。。对不起,用错了语言。
canvas.append(true).write("#{base_dir}/images/#{filename}")