Commit c0257f81 by Barry Hess

Add convert_options to attachment definition and thumbnail's transformation command line.

parent 0c0867d4
...@@ -34,6 +34,7 @@ module Paperclip ...@@ -34,6 +34,7 @@ module Paperclip
@default_style = options[:default_style] @default_style = options[:default_style]
@storage = options[:storage] @storage = options[:storage]
@whiny_thumbnails = options[:whiny_thumbnails] @whiny_thumbnails = options[:whiny_thumbnails]
@convert_options = options[:thumbnail_convert_options]
@options = options @options = options
@queued_for_delete = [] @queued_for_delete = []
@queued_for_write = {} @queued_for_write = {}
...@@ -241,7 +242,8 @@ module Paperclip ...@@ -241,7 +242,8 @@ module Paperclip
@queued_for_write[name] = Thumbnail.make(@queued_for_write[:original], @queued_for_write[name] = Thumbnail.make(@queued_for_write[:original],
dimensions, dimensions,
format, format,
@whiny_thumnails) @whiny_thumnails,
@convert_options)
rescue PaperclipError => e rescue PaperclipError => e
@errors << e.message if @whiny_thumbnails @errors << e.message if @whiny_thumbnails
end end
......
...@@ -2,19 +2,21 @@ module Paperclip ...@@ -2,19 +2,21 @@ module Paperclip
# Handles thumbnailing images that are uploaded. # Handles thumbnailing images that are uploaded.
class Thumbnail class Thumbnail
attr_accessor :file, :current_geometry, :target_geometry, :format, :whiny_thumbnails attr_accessor :file, :current_geometry, :target_geometry, :format, :whiny_thumbnails, :convert_options
# Creates a Thumbnail object set to work on the +file+ given. It # Creates a Thumbnail object set to work on the +file+ given. It
# will attempt to transform the image into one defined by +target_geometry+ # will attempt to transform the image into one defined by +target_geometry+
# which is a "WxH"-style string. +format+ will be inferred from the +file+ # which is a "WxH"-style string. +format+ will be inferred from the +file+
# unless specified. Thumbnail creation will raise no errors unless # unless specified. Thumbnail creation will raise no errors unless
# +whiny_thumbnails+ is true (which it is, by default. # +whiny_thumbnails+ is true (which it is, by default. If +convert_options+ is
def initialize file, target_geometry, format = nil, whiny_thumbnails = true # set, the options will be appended to the convert command upon image conversion
def initialize file, target_geometry, format = nil, whiny_thumbnails = true, convert_options = nil
@file = file @file = file
@crop = target_geometry[-1,1] == '#' @crop = target_geometry[-1,1] == '#'
@target_geometry = Geometry.parse target_geometry @target_geometry = Geometry.parse target_geometry
@current_geometry = Geometry.from_file file @current_geometry = Geometry.from_file file
@whiny_thumbnails = whiny_thumbnails @whiny_thumbnails = whiny_thumbnails
@convert_options = convert_options
@current_format = File.extname(@file.path) @current_format = File.extname(@file.path)
@basename = File.basename(@file.path, @current_format) @basename = File.basename(@file.path, @current_format)
...@@ -24,14 +26,19 @@ module Paperclip ...@@ -24,14 +26,19 @@ module Paperclip
# Creates a thumbnail, as specified in +initialize+, +make+s it, and returns the # Creates a thumbnail, as specified in +initialize+, +make+s it, and returns the
# resulting Tempfile. # resulting Tempfile.
def self.make file, dimensions, format = nil, whiny_thumbnails = true def self.make file, dimensions, format = nil, whiny_thumbnails = true, convert_options = nil
new(file, dimensions, format, whiny_thumbnails).make new(file, dimensions, format, whiny_thumbnails, convert_options).make
end end
# Returns true if the +target_geometry+ is meant to crop. # Returns true if the +target_geometry+ is meant to crop.
def crop? def crop?
@crop @crop
end end
# Returns true if the image is meant to make use of additional convert options.
def convert_options?
@convert_options
end
# Performs the conversion of the +file+ into a thumbnail. Returns the Tempfile # Performs the conversion of the +file+ into a thumbnail. Returns the Tempfile
# that contains the new image. # that contains the new image.
...@@ -61,6 +68,7 @@ module Paperclip ...@@ -61,6 +68,7 @@ module Paperclip
scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) scale, crop = @current_geometry.transformation_to(@target_geometry, crop?)
trans = "-scale \"#{scale}\"" trans = "-scale \"#{scale}\""
trans << " -crop \"#{crop}\" +repage" if crop trans << " -crop \"#{crop}\" +repage" if crop
trans << " #{convert_options}" if convert_options?
trans trans
end end
end end
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment