Class: FaviconFactory::VipsAdapter

Inherits:
BaseAdapter show all
Defined in:
lib/favicon_factory/vips_adapter.rb

Instance Method Summary collapse

Methods inherited from BaseAdapter

#create_icons, find, #initialize

Constructor Details

This class inherits a constructor from FaviconFactory::BaseAdapter

Instance Method Details

#ico!(path, params) ⇒ Object



7
8
9
10
11
12
# File 'lib/favicon_factory/vips_adapter.rb', line 7

def ico!(path, params)
  png = Vips::Image.thumbnail(params.favicon_svg, 32).write_to_buffer(".png")
  # https://www.meziantou.net/creating-ico-files-from-multiple-images-in-dotnet.htm
  ico = [0, 1, 1].pack("S<*") + [32, 32, 0, 0].pack("C*") + [1, 32].pack("S<*") + [png.size, 22].pack("L<*") + png
  file.write(path, ico)
end

#mask!(path, params) ⇒ Object



24
25
26
27
28
# File 'lib/favicon_factory/vips_adapter.rb', line 24

def mask!(path, params)
  svg = Vips::Image.thumbnail(params.favicon_svg, 409).gravity("centre", 512, 512)
  image = square(512, params.background).composite(svg, :over)
  image.write_to_file(path)
end

#png!(path, params, size) ⇒ Object



14
15
16
# File 'lib/favicon_factory/vips_adapter.rb', line 14

def png!(path, params, size)
  Vips::Image.thumbnail(params.favicon_svg, size).write_to_file(path)
end

#touch!(path, params) ⇒ Object



18
19
20
21
22
# File 'lib/favicon_factory/vips_adapter.rb', line 18

def touch!(path, params)
  svg = Vips::Image.thumbnail(params.favicon_svg, 160).gravity("centre", 180, 180)
  image = square(180, params.background).composite(svg, :over)
  image.write_to_file(path)
end