Ruby 在Cuba上使用RMagick会不断返回0作为图像宽度和高度
我正在编写一个图像裁剪器,其中我将一些裁剪区域尺寸传递给post请求,从请求正文中指定的URL下载一个图像,然后使用RMagick按照规范裁剪图像。因为我需要根据图像调整裁剪区域,所以我需要图像的高度和宽度,但是当我尝试访问它们时,它们都是0Ruby 在Cuba上使用RMagick会不断返回0作为图像宽度和高度,ruby,image,rmagick,Ruby,Image,Rmagick,我正在编写一个图像裁剪器,其中我将一些裁剪区域尺寸传递给post请求,从请求正文中指定的URL下载一个图像,然后使用RMagick按照规范裁剪图像。因为我需要根据图像调整裁剪区域,所以我需要图像的高度和宽度,但是当我尝试访问它们时,它们都是0 require "open-uri" require "RMagick" img = Magick::Image.from_blob(open(params['image_url']).read).first 问题就在这里——对于任何图像URL,这两个
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
这是我的建议。结果与之相同。我发现了问题所在——这与RMagick无关,也与我的预期无关。我是Ruby新手,所以我想我学到了关于类型安全的重要一课。我没有让console与Cuba一起工作,所以我一直在通过将它们作为响应呈现到窗口来查看这些值。响应体中的值都是字符串,它们显然在数学中起着不可预测的作用。从这里带回家的东西: a从现在起不再假设类型-检查以确保。
b我需要让我的控制台正常工作-真的没有替代品。我不会说Ruby,但在调用from_blob函数后,你可以检查一些返回值。结果发现这是个问题,因为我也不会说Ruby。我对打字有问题。