From 770aac95c3f13c42519d38f1f33ce54e0b2df802 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sat, 19 Sep 2020 08:07:08 -0700 Subject: [PATCH] Added support for displaying ruby-vips images --- lib/iruby/display.rb | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/iruby/display.rb b/lib/iruby/display.rb index 7709256..f312a55 100644 --- a/lib/iruby/display.rb +++ b/lib/iruby/display.rb @@ -264,6 +264,20 @@ def format(mime = nil, &block) [format == 'PNG' ? 'image/png' : 'image/jpeg', obj.to_blob { |i| i.format = format }] end + match do |obj| + defined?(Vips::Image) && Vips::Image === obj + end + format do |obj| + # handles Vips::Error, vips_image_get: field "vips-loader" not found + loader = obj.get('vips-loader') rescue nil + if loader == 'jpegload' + ['image/jpeg', obj.write_to_buffer('.jpg')] + else + # falls back to png for other/unknown types + ['image/png', obj.write_to_buffer('.png')] + end + end + type { Gruff::Base } format 'image/png', &:to_blob