Created
July 6, 2010 06:47
-
-
Save exviva/465088 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[paperclip] identify '-format' '%wx%h' '/tmp/stream,4458,0.JPG[0]' 2>/dev/null | |
[paperclip] convert '"/tmp/stream,4458,0.JPG[0]" -resize "x100" -crop "100x100+16+0" +repage "/tmp/stream,4458,0,4458,0[0]"' 2>/dev/null | |
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the watermark for stream,4458,0> | |
[paperclip] identify '-format' '%wx%h' '/tmp/stream,4458,0.JPG[0]' 2>/dev/null | |
[paperclip] composite '-gravity Center /home/olek/projekty/shotmix/public/images/watermark.png "/tmp/stream,4458,0.JPG[0]" -resize "640x480>" "/tmp/stream,4458,0,4458,1[0]"' 2>/dev/null | |
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the watermark for stream,4458,0> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[paperclip] identify '-format' '%wx%h' '/tmp/stream,8723,0.JPG[0]' 2>/dev/null | |
[paperclip] convert '"/tmp/stream,8723,0.JPG[0]"' '-resize' 'x100' '-crop' '100x100+16+0' '+repage' '"/tmp/stream,8723,0,8723,0[0]"' 2>/dev/null | |
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the watermark for stream,8723,0> | |
[paperclip] identify '-format' '%wx%h' '/tmp/stream,8723,0.JPG[0]' 2>/dev/null | |
[paperclip] composite '-gravity' 'Center' '/home/olek/projekty/shotmix/public/images/watermark.png' '"/tmp/stream,8723,0.JPG[0]"' '-resize' '640x480>' '"/tmp/stream,8723,0,8723,1[0]"' 2>/dev/null | |
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the watermark for stream,8723,0> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git b/lib/paperclip_processors/watermark.rb a/lib/paperclip_processors/watermark.rb | |
index 2493f1b..2a8977b 100644 | |
--- b/lib/paperclip_processors/watermark.rb | |
+++ a/lib/paperclip_processors/watermark.rb | |
@@ -42,14 +42,18 @@ module Paperclip | |
if watermark_path | |
command = "composite" | |
- params = "-gravity #{@position} #{watermark_path} #{fromfile} #{transformation_command} #{tofile(dst)}" | |
+ params = %W[-gravity #{@position} #{watermark_path} #{fromfile}] | |
+ params += transformation_command | |
+ params << tofile(dst) | |
else | |
command = "convert" | |
- params = "#{fromfile} #{transformation_command} #{tofile(dst)}" | |
+ params = [fromfile] | |
+ params += transformation_command | |
+ params << tofile(dst) | |
end | |
begin | |
- success = Paperclip.run(command, params) | |
+ success = Paperclip.run(command, *params) | |
rescue PaperclipCommandLineError | |
raise PaperclipError, "There was an error processing the watermark for #{@basename}" if @whiny | |
end | |
@@ -67,9 +71,9 @@ module Paperclip | |
def transformation_command | |
scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) | |
- trans = "-resize \"#{scale}\"" | |
- trans << " -crop \"#{crop}\" +repage" if crop | |
- trans << " #{convert_options}" if convert_options? | |
+ trans = %W[-resize #{scale}] | |
+ trans += %W[-crop #{crop} +repage] if crop | |
+ trans << convert_options if convert_options? | |
trans | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git b/lib/paperclip_processors/watermark.rb a/lib/paperclip_processors/watermark.rb | |
index c35b56d..7060ced 100644 | |
--- b/lib/paperclip_processors/watermark.rb | |
+++ a/lib/paperclip_processors/watermark.rb | |
@@ -60,12 +60,12 @@ module Paperclip | |
end | |
def fromfile | |
- "\"#{ File.expand_path(@file.path) }[0]\"" | |
+ File.expand_path(@file.path) | |
end | |
def tofile(destination) | |
- "\"#{ File.expand_path(destination.path) }[0]\"" | |
- end | |
+ File.expand_path(destination.path) | |
+ end | |
def transformation_command | |
scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Photo < ActiveRecord::Base | |
has_attached_file :image, :processors => [:watermark], | |
:styles => {:thumb => '100x100#', | |
:preview => { | |
:geometry => '640x480>', | |
:watermark_path => "#{Rails.root}/public/images/watermark.png", | |
:position => 'Center' | |
} | |
} | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'paperclip_processors/watermark' | |
class Photo < ActiveRecord::Base | |
... |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# from http://github.com/ng/paperclip-watermarking-app with modifications | |
module Paperclip | |
class Watermark < Processor | |
# Handles watermarking of images that are uploaded. | |
attr_accessor :current_geometry, :target_geometry, :format, :whiny, :convert_options, :watermark_path, :overlay, :position | |
def initialize file, options = {}, attachment = nil | |
super | |
geometry = options[:geometry] | |
@file = file | |
@crop = geometry[-1,1] == '#' | |
@target_geometry = Geometry.parse geometry | |
@current_geometry = Geometry.from_file @file | |
@convert_options = options[:convert_options] | |
@whiny = options[:whiny].nil? ? true : options[:whiny] | |
@format = options[:format] | |
@watermark_path = options[:watermark_path] | |
@position = options[:position].nil? ? "SouthEast" : options[:position] | |
@overlay = options[:overlay].nil? ? true : false | |
@current_format = File.extname(@file.path) | |
@basename = File.basename(@file.path, @current_format) | |
end | |
# TODO: extend watermark | |
# Returns true if the +target_geometry+ is meant to crop. | |
def crop? | |
@crop | |
end | |
# Returns true if the image is meant to make use of additional convert options. | |
def convert_options? | |
not @convert_options.blank? | |
end | |
# Performs the conversion of the +file+ into a watermark. Returns the Tempfile | |
# that contains the new image. | |
def make | |
dst = Tempfile.new([@basename, @format].compact.join(".")) | |
dst.binmode | |
if watermark_path | |
command = "composite" | |
params = %W[-gravity #{@position} #{watermark_path} #{fromfile}] | |
params += transformation_command | |
params << tofile(dst) | |
else | |
command = "convert" | |
params = [fromfile] | |
params += transformation_command | |
params << tofile(dst) | |
end | |
begin | |
success = Paperclip.run(command, *params) | |
rescue PaperclipCommandLineError | |
raise PaperclipError, "There was an error processing the watermark for #{@basename}" if @whiny | |
end | |
dst | |
end | |
def fromfile | |
File.expand_path(@file.path) | |
end | |
def tofile(destination) | |
File.expand_path(destination.path) | |
end | |
def transformation_command | |
scale, crop = @current_geometry.transformation_to(@target_geometry, crop?) | |
trans = %W[-resize #{scale}] | |
trans += %W[-crop #{crop} +repage] if crop | |
trans << convert_options if convert_options? | |
trans | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment