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|