class Photoapp::Photo
Attributes
config[RW]
file[RW]
image[RW]
logo[RW]
session[RW]
Public Class Methods
new(file, logo, session)
click to toggle source
# File lib/photoapp/photo.rb, line 8 def initialize(file, logo, session) @file = file @logo = logo @session = session @config = session.config end
Public Instance Methods
add_shadowed_text(text, size, gravity, width=800)
click to toggle source
# File lib/photoapp/photo.rb, line 50 def add_shadowed_text(text, size, gravity, width=800) setting = config shadowed_text = [] %w(#000 #fff).each do |color| image = Image.new(width, 70) { self.background_color = "rgba(255, 255, 255, 0" } txt = Draw.new txt.annotate(image, 0, 0, 0, 0, text) do txt.gravity = gravity txt.pointsize = size txt.fill = color txt.font = setting['font'] if color == '#000' txt.stroke = color end end # Blur drop shadow if color == '#000' image = image.blur_image(radius=6.0, sigma=2.0) end shadowed_text.push image end shadowed_text end
cleanup()
click to toggle source
# File lib/photoapp/photo.rb, line 108 def cleanup watermark.destroy! with_url.destroy! end
date_text()
click to toggle source
# File lib/photoapp/photo.rb, line 45 def date_text date = Time.now.strftime('%b %d, %Y') add_shadowed_text date, config['date_font_size'], NorthEastGravity, 250 end
import_dest()
click to toggle source
# File lib/photoapp/photo.rb, line 127 def import_dest File.join(config['photos_import'], short + '.jpg') end
print_dest()
click to toggle source
# File lib/photoapp/photo.rb, line 117 def print_dest File.join(config['print'], short + '.jpg') end
print_dup_dest()
click to toggle source
# File lib/photoapp/photo.rb, line 121 def print_dup_dest if config['print_duplicate'] File.join(config['print_duplicate'], short + '.jpg') end end
short()
click to toggle source
# File lib/photoapp/photo.rb, line 131 def short @short ||= begin now = Time.now date = "#{now.strftime('%y')}#{now.strftime('%d')}#{now.month}" source = [*?a..?z] - ['o', 'l'] + [*2..9] short = '' 5.times { short << source.sample.to_s } short = "#{short}#{date}" session.photos << short + '.jpg' short end end
upload_dest()
click to toggle source
# File lib/photoapp/photo.rb, line 113 def upload_dest File.join(config['upload'], short + '.jpg') end
url_text()
click to toggle source
# File lib/photoapp/photo.rb, line 41 def url_text add_shadowed_text "#{config['url_base']}/#{short}.jpg", config['font_size'], NorthEastGravity end
watermark()
click to toggle source
# File lib/photoapp/photo.rb, line 23 def watermark @watermarked ||= begin date = date_text image.composite(logo, SouthWestGravity, 50, 45, OverCompositeOp) .composite(date[0], SouthWestGravity, 0, -10, OverCompositeOp) .composite(date[1], SouthWestGravity, 0, -10, OverCompositeOp) end end
with_url()
click to toggle source
# File lib/photoapp/photo.rb, line 32 def with_url @printable ||= begin url = url_text watermark.dup .composite(url[0], SouthEastGravity, 40, 30, OverCompositeOp) .composite(url[1], SouthEastGravity, 40, 30, OverCompositeOp) end end
write(path=nil)
click to toggle source
# File lib/photoapp/photo.rb, line 79 def write(path=nil) if path FileUtils.mkdir_p(File.dirname(path)) with_url.write path cleanup else FileUtils.mkdir_p(File.dirname(upload_dest)) FileUtils.mkdir_p(File.dirname(print_dest)) FileUtils.mkdir_p(File.dirname(print_dup_dest)) if print_dup_dest FileUtils.mkdir_p(File.dirname(import_dest)) puts "writing #{upload_dest}" watermark.write upload_dest puts "writing #{print_dest}" with_url.write print_dest if print_dup_dest puts "writing #{print_dup_dest}" with_url.write print_dup_dest end puts "writing #{import_dest}" with_url.write import_dest cleanup end end