我正在编写一个图像裁剪器,我将一些裁剪区域尺寸传递给一个发布请求,从请求正文中指定的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相同。
答案 0 :(得分:0)
我发现了问题所在 - 这与RMagick没什么关系,我没有预料到什么。我是Ruby的新手,所以我想我学到了关于类型安全的重要课程。我没有让控制台与古巴合作,所以我通过将它们作为对窗口的响应来查看这些值。响应体中的值都是在数学中显然无法预测的字符串。从这里带回家的事情: a)从现在开始不假设类型 - 检查以确定。 b)我需要让我的控制台工作 - 没有替代品,真的。