You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docuseal/vendor/bundle/ruby/4.0.0/gems/ruby-vips-2.3.0/example/connection.rb

27 lines
710 B

#!/usr/bin/ruby
require "vips"
require "down/http"
# byte_source = File.open ARGV[0], "rb"
# eg. https://images.unsplash.com/photo-1491933382434-500287f9b54b
byte_source = Down::Http.open(ARGV[0])
source = Vips::SourceCustom.new
source.on_read do |length|
puts "reading #{length} bytes ..."
byte_source.read length
end
source.on_seek do |offset, whence|
puts "seeking to #{offset}, #{whence}"
byte_source.seek(offset, whence)
end
byte_target = File.open ARGV[1], "wb"
target = Vips::TargetCustom.new
target.on_write { |chunk| byte_target.write(chunk) }
target.on_finish { byte_target.close }
image = Vips::Image.new_from_source source, "", access: :sequential
image.write_to_target target, ".jpg"