bcms_thumbnail 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README +8 -2
- data/lib/bcms_thumbnail/bcms_thumbnail.rb +7 -6
- metadata +2 -2
data/README
CHANGED
@@ -10,11 +10,11 @@ This extension adds a "thumbnail" view helper that takes a content_block with an
|
|
10
10
|
|
11
11
|
== Examples
|
12
12
|
|
13
|
-
It's pretty simple. The code below demonstrates creating a thumbnail from an image block, which (naturally) has a browser_cms attachment. This code overrides the default 100x100 geometry and creates images of no larger than 125 pixels on any side.
|
13
|
+
It's pretty simple. The code below demonstrates creating a thumbnail from an image block, which (naturally) has a browser_cms attachment. This code overrides the default 100x100 geometry and creates images of no larger than 125 pixels on any side, with a quality of 85.
|
14
14
|
|
15
15
|
Add a dynamic portlet and the add this to the template:
|
16
16
|
<% image = ImageBlock.find(:first) %>
|
17
|
-
<%= image_tag(thumbnail(image,'125x125')) %>
|
17
|
+
<%= image_tag(thumbnail(image,'125x125',85)) %>
|
18
18
|
|
19
19
|
A stupidly simple image gallery? It's easier than you think! Again, in a dynamic portlet:
|
20
20
|
|
@@ -38,6 +38,12 @@ You can also create square thumbnails via the "thumbnail_square" helper. You sho
|
|
38
38
|
<% image = ImageBlock.find(:first) %>
|
39
39
|
<%= image_tag(thumbnail_square(image,'125')) %>
|
40
40
|
|
41
|
+
So "thumbnail" and "thumbnail_square" accept three parameters:
|
42
|
+
|
43
|
+
# The object with the attachment,
|
44
|
+
# The geometry, and
|
45
|
+
# An integer representing the JPG compression level, from 1 to 100. Default is 85.
|
46
|
+
|
41
47
|
== Geometries
|
42
48
|
|
43
49
|
ImageMagick will preserve aspect ratio with all the geometries below:
|
@@ -4,21 +4,21 @@ module ActionView
|
|
4
4
|
module Helpers
|
5
5
|
module_function
|
6
6
|
|
7
|
-
def thumbnail(attachment_obj,geometry = '100x100')
|
8
|
-
thumbnail_engine(attachment_obj,geometry,false)
|
7
|
+
def thumbnail(attachment_obj,geometry = '100x100', quality = 85)
|
8
|
+
thumbnail_engine(attachment_obj, geometry, false, quality)
|
9
9
|
end
|
10
10
|
|
11
|
-
def thumbnail_square(attachment_obj,geometry = '100')
|
11
|
+
def thumbnail_square(attachment_obj,geometry = '100', quality = 85)
|
12
12
|
fixed_geometry = geometry
|
13
13
|
if geometry.match(/\D/)
|
14
14
|
fixed_geometry = geometry.split(/\D/)[0]
|
15
15
|
end
|
16
|
-
thumbnail_engine(attachment_obj,geometry,true)
|
16
|
+
thumbnail_engine(attachment_obj, geometry, true, quality)
|
17
17
|
end
|
18
18
|
|
19
|
-
def thumbnail_engine(attachment_obj,geometry = '100x100',square = false)
|
19
|
+
def thumbnail_engine(attachment_obj,geometry = '100x100',square = false, quality = 85)
|
20
20
|
if ! attachment_obj.blank? && attachment_obj.respond_to?('attachment') && ['jpg','png','gif','bmp'].include?(attachment_obj.attachment.file_extension.downcase)
|
21
|
-
thumbnail_location = "/bcms_thumbnail_cache/#{geometry}/#{attachment_obj.attachment.file_location.gsub(/[\\\/]/,'-')}#{(square) ? '-square' : ''}.jpg"
|
21
|
+
thumbnail_location = "/bcms_thumbnail_cache/#{geometry}/#{attachment_obj.attachment.file_location.gsub(/[\\\/]/,'-')}#{(square) ? '-square' : ''}#{quality}.jpg"
|
22
22
|
if ! File.exists?("#{RAILS_ROOT}/public#{thumbnail_location}")
|
23
23
|
if ! File.exists?("#{RAILS_ROOT}/public/bcms_thumbnail_cache/#{geometry}")
|
24
24
|
FileUtils.mkdir_p("#{RAILS_ROOT}/public/bcms_thumbnail_cache/#{geometry}")
|
@@ -26,6 +26,7 @@ module ActionView
|
|
26
26
|
FileUtils.chmod 0755, "#{RAILS_ROOT}/public/bcms_thumbnail_cache/#{geometry}"
|
27
27
|
end
|
28
28
|
image = MiniMagick::Image.from_file("#{RAILS_ROOT}/tmp/uploads/#{attachment_obj.attachment.file_location}")
|
29
|
+
image.quality quality
|
29
30
|
if square
|
30
31
|
if image[:width] < image[:height]
|
31
32
|
remove = ((image[:height] - image[:width])/2).round
|