Module: StorageImageProcessing
Instance Method Summary
collapse
#crop_image, #landscape?, #portrait?, #resize_to_larger_side, #resize_to_larger_side!, #rotate_attached_image, #rotate_image, #rotate_left, #rotate_right
#build_watermarks, #create_watermark, #create_watermark_canvas, #has_watermark?, #need_watermark?, #put_watermark_on_base_image, #watermark_canvas_path, #watermark_dir_path, #watermark_font, #watermark_path
Instance Method Details
#build_base_image ⇒ Object
67
68
69
70
71
|
# File 'app/models/concerns/storage_image_processing.rb', line 67
def build_base_image
src = path
base = path :base
prepare_image(src, base, TheStorages.config.base_larger_side)
end
|
#build_base_images ⇒ Object
12
13
14
15
16
17
18
19
|
# File 'app/models/concerns/storage_image_processing.rb', line 12
def build_base_images
resize_src_image
refresh_base_image
src_size = File.size?(path)
update(processing: :finished, attachment_file_size: src_size)
end
|
#build_correct_preview ⇒ Object
61
62
63
64
65
|
# File 'app/models/concerns/storage_image_processing.rb', line 61
def build_correct_preview
src = path
preview = path :preview
build_square_image(src, preview, 100)
end
|
#build_square_image(src, dest, side = 100) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'app/models/concerns/storage_image_processing.rb', line 36
def build_square_image src, dest, side = 100
image = MiniMagick::Image.open src
min_size = image[:width]
shift = { x: 0, y: 0}
if landscape?(image)
min_size = image[:height]
shift[:x] = (image[:width] - min_size) / 2
elsif portrait?(image)
min_size = image[:width]
shift[:y] = (image[:height] - min_size) / 2
end
x0 = shift[:x]
y0 = shift[:y]
w = h = min_size
image.crop "#{w}x#{h}+#{x0}+#{y0}"
image.resize "#{side}x#{side}!"
create_img_dir_path(dest)
image.write dest
end
|
#create_img_dir_path(path) ⇒ Object
21
22
23
24
|
# File 'app/models/concerns/storage_image_processing.rb', line 21
def create_img_dir_path path
_path = path.split('/')[0...-1].join('/')
FileUtils.mkdir_p _path
end
|
#destroy_processed_files ⇒ Object
84
85
86
87
88
89
|
# File 'app/models/concerns/storage_image_processing.rb', line 84
def destroy_processed_files
base = path :base
preview = path :preview
FileUtils.rm([base, preview], force: true)
end
|
#draw_watermark ⇒ Object
6
7
8
9
10
|
# File 'app/models/concerns/storage_image_processing.rb', line 6
def draw_watermark
return false unless need_watermark?
build_watermarks
put_watermark_on_base_image
end
|
#prepare_image(src, dest, larger_side) ⇒ Object
27
28
29
30
31
32
33
34
|
# File 'app/models/concerns/storage_image_processing.rb', line 27
def prepare_image src, dest, larger_side
image = MiniMagick::Image.open src
image.auto_orient
resize_to_larger_side(image, larger_side)
image.strip
create_img_dir_path(dest)
image.write(dest)
end
|
#refresh_base_image ⇒ Object
73
74
75
76
77
|
# File 'app/models/concerns/storage_image_processing.rb', line 73
def refresh_base_image
build_base_image
build_correct_preview
draw_watermark
end
|
#resize_src_image ⇒ Object
79
80
81
82
|
# File 'app/models/concerns/storage_image_processing.rb', line 79
def resize_src_image
src = path
prepare_image(src, src, TheStorages.config.original_larger_side)
end
|