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

Using RMagick on Cuba keeps returning 0 as image width and height

我正在编写一个图像裁剪器,我将一些裁剪区域尺寸传递给 post 请求,从请求正文中指定的 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 位 78kb

这是 image. The result is the same with other cute animal pictures

我发现了问题所在 - RMagick 没有任何问题,也没有我预料到的问题。我是 Ruby 的新手,所以我想我学到了关于类型安全的重要一课。我没有让控制台与 Cuba 一起工作,所以我一直在通过将它们作为对 window 的响应来查看这些值。响应体中的值都是字符串,这在数学上显然是不可预测的。从这里带回家的东西: a) 从现在开始不再假设类型——检查以确保。 b) 我需要让我的控制台正常工作 - 没有替代品,真的。