【问题标题】:Ruby-vips getting EXIF orientationRuby-vips 获得 EXIF 方向
【发布时间】:2014-02-04 18:31:02
【问题描述】:

我正在尝试从ruby-vips gem 获取图像 EXIF 数据,但我不断收到错误消息。我找到了 documentation from others 尝试修复此问题的人,我尝试了他们的修复但没有成功。

i=VIPS::Image.new("/home/eric/Pictures/golden-clouds-wallpaper.jpg")
i.get("exif-Orientation")
i.get("exif-ifd0-Orientation")

两者都报错:

VIPS error: vips_image_get: field "exif-Orientation" not found
VIPS error: vips_image_get: field "exif-ifd0-Orientation" not found

Ubuntu 版本 13.10

贵宾版本 7.28.5

ruby-vips 0.3.7

编辑

2.1.0 :001 > require 'rubygems' => false 
2.1.0 :002 > require 'vips' => true 
2.1.0 :003 > a = VIPS::Image.new('/home/eric/Pictures/devProfile.JPG') => #<VIPS::Image:0x00000001e4d7b0> 
2.1.0 :004 > a.get("exif-Orientation")
VIPS::Error: VIPS error: vips_image_get: field "exif-Orientation" not found

from (irb):4:in `get'
from (irb):4
from /home/eric/.rvm/rubies/ruby-2.1.0/bin/irb:11:in `<main>'

【问题讨论】:

  • 对于那些希望自动定位图像的人,请查看Rmagick#auto_orient,为我节省了大量时间。
  • 谢谢,是的,Rmagick#auto_orient 运行良好,但这是关于 vips gem 的主题。以前,我使用 Rmagick,但我的图像处理时间是 VIPS 的 10 倍。权衡是 Vips Gem 不支持开箱即用的 auto_orient。
  • 事后看来,你是完全正确的,不知道我为什么在这里发表这条评论。也许只是作为一种选择。不过,很高兴知道 VIPS 的效率有多高,谢谢!

标签: ruby exif vips


【解决方案1】:

安装 vips GUI,nip2,然后尝试在其中加载您的 JPEG 图像。右键单击缩略图,选择标题,然后查看显示的字段。您应该在那里看到方向。

我这里有 Ubuntu 13.10 / vips-7.28.5 / ruby​​-vips 0.3.7,我看到了:

$ vips --version
vips-7.28.5-Sat Mar  9 18:46:42 UTC 2013
$ gem install ruby-vips
Fetching: ruby-vips-0.3.7.gem (100%)
Building native extensions.  This could take a while...
Successfully installed ruby-vips-0.3.7
1 gem installed
Installing ri documentation for ruby-vips-0.3.7...
Installing RDoc documentation for ruby-vips-0.3.7...
$ irb
irb(main):001:0> require 'rubygems'
=> false
irb(main):002:0> require 'vips'
=> true
irb(main):003:0> a = VIPS::Image.new("pics/img_2522.jpg")
=> #<VIPS::Image:0x00000001a0e528>
irb(main):004:0> a.get("exif-Orientation")
=> "1 (Top-left, Short, 1 components, 2 bytes)"
irb(main):005:0> 

【讨论】:

  • 我已经用与您的答案匹配的输出更新了我的问题。还是不行。
  • 你能试试 nip2,vips GUI 吗?很合适,只是sudo apt-get install nip2。加载您的图像并确认 vips 可以在您的 jpeg 中看到方向字段。然后在 ruby​​-vips 中,尝试VIPS::LIB_VERSION 并确认 ruby​​-vips 正在选择正确的 libvips。
  • VIPS::LIB_VERSION = "7.28.5-Sat Mar 9 18:46:42 UTC 2013" 匹配我的 libvips 版本。
  • 这是我的测试图像:vips.ecs.soton.ac.uk/vips-7.8/doc/examples/img_2522.jpg 你能看到其中的方向吗? a.exif? 应该说如果图像上有 EXIF 块,a.exif 应该将所有 exif 数据作为二进制字符串返回。
  • 有趣,您的测试图像有效,但我的所有测试图像都失败了。我现在正在研究 EXIF 数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
相关资源
最近更新 更多