在古巴使用RMagick保持返回0作为图像宽度和高度

时间:2015-03-22 20:13:55

标签: ruby image rmagick

我正在编写一个图像裁剪器,我将一些裁剪区域尺寸传递给一个发布请求,从请求正文中指定的URL下载图像,并使用RMagick按照规范裁剪图像。由于我需要将裁剪区域调整为图像,我需要图像高度和宽度,但是当我尝试访问它们时,它们都是0。

require "open-uri"
require "RMagick"

img = Magick::Image.from_blob(open(params['image_url']).read).first

问题出在这里 - 这两个值对于任何图像URL都是零。

width = img.columns
height = img.rows

这里我尝试根据post请求中传递的指定参数裁剪图像,然后将其写入文件。

img.crop!(params['image_x'].to_f * width, params['image_y'].to_f * height, params['image_width'].to_f * width, params['image_height'].to_f * height, true)
img.write image_name

其他一切正常 - 如果我检查图像,我明白了:

JPEG 990x743 990x743 + 0 + 0 DirectClass 8-bit 78kb

这是image。结果与other cute animal pictures相同。

1 个答案:

答案 0 :(得分:0)

我发现了问题所在 - 这与RMagick没什么关系,我没有预料到什么。我是Ruby的新手,所以我想我学到了关于类型安全的重要课程。我没有让控制台与古巴合作,所以我通过将它们作为对窗口的响应来查看这些值。响应体中的值都是在数学中显然无法预测的字符串。从这里带回家的事情: a)从现在开始不假设类型 - 检查以确定。 b)我需要让我的控制台工作 - 没有替代品,真的。