【问题标题】:RMagick - how do I find out the pixel dimension of an imageRMagick - 我如何找出图像的像素尺寸
【发布时间】:2013-04-28 19:35:09
【问题描述】:

这可能是一个愚蠢的问题,但是如何找到以像素为单位的图像宽度和高度?

image.x_resolutionimage.y_resolution 由于某种原因都返回 0。

【问题讨论】:

  • x_resolutiony_resolution 是与输出设备有关的属性 - 例如每英寸像素数。

标签: ruby rmagick


【解决方案1】:
require 'rmagick'
img = Magick::Image.ping( 'demo.png' ).first
width = img.columns
height = img.rows

注意从 cmets 导入的 .ping 方法。如果您需要读取图像来处理它,请使用Magick::Image.read( 'demo.png' ).first - 使用ping 在此独立代码中工作,并加快处理IM 只能读取标题块的某些图像类型。这对于您不需要加载图像本身来处理它的情况很有用。

【讨论】:

  • 如果你只对图像元数据感兴趣,而不关心像素数据,你应该使用ping而不是read。见the doc page
  • 稍微干净的 imo:img = Magick::Image.read('demo.png')[0]; width, height = image.columns, image.rows
  • @mahemoff:编辑删除了额外的[0]s。答案实际上是关于稍微模糊的方法名称 columnsrows 。 . .完全取决于你想如何使用它们。
  • 确实,这是一个附带问题。我只是在这里找到宽度,高度清洁器的习语,但是嘿,它是 Ruby - timtowtdi
  • 这里只是我的 2c - 我怀疑它只读取部分标题块以报告此数据的说法。我基于客户体验加载 16 张图像,每张 JPG,“ping”所需的时间从 0.023 秒到 1.25 秒不等 - 如果只读取一个小标题,人们会期望这会更加一致,而且绝对少于 1.25 秒
【解决方案2】:

您可以从 img.inspect 获取图像尺寸 - 说明包含在 http://www.imagemagick.org/RMagick/doc/image2.html

一个例子是

 f.inspect » "images/Flower_Hat.jpg JPEG 200x250 DirectClass 8-bit 9kb"

【讨论】:

  • 该操作专门询问了 Rmagick,而您给出了 ImageMagick 的答案。虽然她/他可以从中找出答案,但这不是你应该回答问题的方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-08
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多