bin/httpthumbnailer in httpthumbnailer-0.0.13 vs bin/httpthumbnailer in httpthumbnailer-0.0.14
- old
+ new
@@ -6,10 +6,11 @@
options = CLI.new do
description 'HTTP thumbnailing server'
switch :no_bind, :description => "Do not bind to TCP socket - useful with -s fastcgi option"
switch :no_logging, :description => "Disable logging"
switch :debug, :description => "Enable debugging"
+ switch :no_optimization, :description => "Disable size hinting and related optimization (loading, prescaling)"
option :bind, :short => :b, :default => IP.new('127.0.0.1'), :cast => IP, :description => "HTTP server bind address - use 0.0.0.0 to bind to all interfaces"
option :port, :short => :p, :default => 3100, :cast => Integer, :description => "HTTP server TCP port"
option :server, :short => :s, :default => 'mongrel', :description => "Rack server handler like thin, mongrel, webrick, fastcgi etc."
option :limit_memory, :default => 128*1024**2, :cast => Integer, :description => "Image cache heap memory size limit in bytes"
option :limit_map, :default => 256*1024**2, :cast => Integer, :description => "Image cache memory mapped file size limit in bytes - used when heap memory limit is used up"
@@ -37,10 +38,11 @@
sinatra.set :server, options.server
sinatra.set :lock, true
sinatra.set :boundary, "thumnail image data"
sinatra.set :logging, (not options.no_logging)
sinatra.set :debug, options.debug
+sinatra.set :optimization, (not options.no_optimization)
sinatra.set :limit_memory, options.limit_memory
sinatra.set :limit_map, options.limit_map
sinatra.set :limit_disk, options.limit_disk
sinatra.before do
@@ -88,10 +90,17 @@
$thumbnailer.images.to_s
end
sinatra.put %r{^/thumbnail/(.*)} do |specs|
thumbnail_specs = ThumbnailSpecs.from_uri(specs)
- $thumbnailer.load(request.body) do |original_image_handler|
+
+ opts = {}
+ if settings.optimization
+ biggest_spec = thumbnail_specs.biggest_spec
+ opts.merge!({'max-width' => biggest_spec.width, 'max-height' => biggest_spec.height})
+ end
+
+ $thumbnailer.load(request.body, opts) do |original_image_handler|
status 200
headers "Content-Type" => "multipart/mixed; boundary=\"#{settings.boundary}\""
stream do |out| # this is non blocking
original_image_handler.use do |original_image|