light_resizer 0.1.4 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/lib/light_resizer.rb +2 -2
- data/lib/light_resizer/carrierwave_resize.rb +15 -7
- data/lib/light_resizer/image_loader/resize_image.rb +1 -1
- data/lib/light_resizer/middleware.rb +14 -11
- data/lib/light_resizer/middleware/resizer.rb +16 -24
- data/lib/light_resizer/version.rb +1 -1
- data/light_resizer.gemspec +13 -13
- data/spec/integration/middleware_spec.rb +3 -3
- data/spec/unit/middleware_path_spec.rb +4 -4
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7392c4235044044545b0f61bfa4a6e74c1c23b2
|
4
|
+
data.tar.gz: d1105fc9f115d319c809c7a07093e9aa19cf3b41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d224b64e7325571e306e8c264589d5d372a9a72e84035b25d8c636e05784020660a147594f2f10e747b97d7f9a6bf0bce96200f06b271a4b75a71a6df45e4c37
|
7
|
+
data.tar.gz: fe2a98b18901abe8ba8e6a39d1c4a43cab003152ade0102bd8e77c8e13d142de962a9e827f60558e032450c064e3dd2c103e02e1a0e4016086b3730d8c0d873a
|
data/.gitignore
CHANGED
data/lib/light_resizer.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module LightResizer
|
2
2
|
module CarrierWaveResize
|
3
|
+
|
3
4
|
def resize_without_crop(width, height)
|
4
5
|
filename_prefix = "#{width}x#{height}_"
|
5
6
|
resized_image_path(filename_prefix, 'png')
|
@@ -12,15 +13,22 @@ module LightResizer
|
|
12
13
|
resized_image_path(filename_prefix)
|
13
14
|
end
|
14
15
|
|
16
|
+
def crop(image_path, x, y, width, height)
|
17
|
+
image = ::Magick::Image.read(image_path).first
|
18
|
+
image.crop!(x.to_i, y.to_i, width.to_i, height.to_i)
|
19
|
+
image.write("#{Rails.root}/tmp/cache/#{x}_#{y}_#{width}_#{height}_#{/([^\/]*)$/.match(image_path)[1]}")
|
20
|
+
File.open(image.filename)
|
21
|
+
end
|
22
|
+
|
15
23
|
private
|
16
|
-
def resized_image_path(prefix, extension = nil)
|
17
|
-
if url
|
18
|
-
path = File.dirname(url)
|
19
|
-
filename = File.basename(url, '.*')
|
20
|
-
new_filname = prefix + filename + '.png'
|
21
24
|
|
22
|
-
|
23
|
-
|
25
|
+
def resized_image_path(prefix, extension = 'png')
|
26
|
+
if url
|
27
|
+
filename = File.basename(url, '.*')
|
28
|
+
new_filename = "#{prefix}#{filename}.#{extension}"
|
29
|
+
File.join(File.dirname(url), 'light_resize', new_filename)
|
24
30
|
end
|
31
|
+
end
|
32
|
+
|
25
33
|
end
|
26
34
|
end
|
@@ -6,7 +6,7 @@ require 'light_resizer/middleware/resizer'
|
|
6
6
|
module LightResizer
|
7
7
|
class Middleware
|
8
8
|
|
9
|
-
def initialize(app, root, folder='public')
|
9
|
+
def initialize(app, root, folder = 'public')
|
10
10
|
@app = app
|
11
11
|
@image_loader = LightResizer::ImageLoader.new File.join(root, folder)
|
12
12
|
@path = LightResizer::Middleware::Path.new
|
@@ -15,12 +15,11 @@ module LightResizer
|
|
15
15
|
|
16
16
|
def call(env)
|
17
17
|
@path.request_path = env['PATH_INFO']
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
Rack::File.new(@image_loader.resized.root_dir).call(env) #todo check
|
18
|
+
if @path.image_path? and resize_request?
|
19
|
+
resize
|
20
|
+
Rack::File.new(@image_loader.resized.root_dir).call(env) #todo check
|
22
21
|
else
|
23
|
-
|
22
|
+
@app.call(env)
|
24
23
|
end
|
25
24
|
|
26
25
|
end
|
@@ -28,17 +27,21 @@ module LightResizer
|
|
28
27
|
def resize_request?
|
29
28
|
@image_loader.original_image_path = @path.image_path
|
30
29
|
@image_loader.resize_prefix = @path.prefix
|
31
|
-
|
32
30
|
@image_loader.original_image_exist?
|
33
31
|
end
|
34
32
|
|
35
33
|
private
|
36
34
|
|
37
35
|
def resize
|
38
|
-
|
39
|
-
@
|
40
|
-
|
36
|
+
@resizer.resize(
|
37
|
+
@path.dimensions,
|
38
|
+
@image_loader.original_path,
|
39
|
+
@image_loader.resize_path,
|
40
|
+
@path.crop_path?,
|
41
|
+
@path.image_extension,
|
42
|
+
@path.convert_path?
|
43
|
+
) unless @image_loader.resized_image_exist?
|
41
44
|
end
|
42
45
|
|
43
46
|
end
|
44
|
-
end
|
47
|
+
end
|
@@ -9,6 +9,7 @@ module LightResizer
|
|
9
9
|
end
|
10
10
|
|
11
11
|
private
|
12
|
+
|
12
13
|
def check_resized_dir(resize_path)
|
13
14
|
dir_name = File.dirname resize_path
|
14
15
|
Dir.mkdir dir_name unless Dir.exist? dir_name
|
@@ -17,37 +18,28 @@ module LightResizer
|
|
17
18
|
|
18
19
|
def store_image(dimensions, original_path, resize_path, crop, extension)
|
19
20
|
original_path += '.*'
|
20
|
-
|
21
|
+
width, height = dimensions.split('x').map &:to_i
|
21
22
|
|
22
|
-
@
|
23
|
+
@image = Magick::Image.read(Dir[original_path].first).first
|
24
|
+
@image.format = extension[1..-1]
|
23
25
|
|
24
26
|
# WARNING: DO NOT CHANGE COMMANDS ORDER FOR @IMAGE OBJECT
|
25
|
-
#
|
26
|
-
|
27
|
-
crop ? set_crop_options(dimensions) : set_options(dimensions)
|
27
|
+
# really, don't do this
|
28
|
+
crop ? crop_image(width, height) : resize_image(width, height)
|
28
29
|
|
29
|
-
@image.write
|
30
|
+
@image.write(resize_path + extension)
|
30
31
|
end
|
31
|
-
|
32
|
-
def
|
33
|
-
@image.
|
34
|
-
|
35
|
-
|
36
|
-
c.add_command 'extent', dimensions
|
37
|
-
c.gravity 'center'
|
38
|
-
c.background 'transparent'
|
39
|
-
end
|
32
|
+
|
33
|
+
def resize_image(width, height)
|
34
|
+
@image.resize_to_fit!(width, height)
|
35
|
+
@image.background_color = 'Transparent'
|
36
|
+
@image = @image.extent(width, height, (@image.columns - width) / 2, (@image.rows - height) / 2) # does not work with simple gravity
|
40
37
|
end
|
41
|
-
|
42
|
-
def
|
43
|
-
@image.
|
44
|
-
c.adaptive_resize dimensions+'^'
|
45
|
-
c.add_command 'quality', '0'
|
46
|
-
c.add_command 'extent', dimensions
|
47
|
-
c.gravity 'center'
|
48
|
-
end
|
38
|
+
|
39
|
+
def crop_image(width, height)
|
40
|
+
@image.resize_to_fill!(width, height)
|
49
41
|
end
|
50
42
|
|
51
43
|
end
|
52
44
|
end
|
53
|
-
end
|
45
|
+
end
|
data/light_resizer.gemspec
CHANGED
@@ -4,26 +4,26 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'light_resizer/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'light_resizer'
|
8
8
|
spec.version = LightResizer::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email =
|
9
|
+
spec.authors = ['Denis Sergienko', 'Vladislav Melanitskiy']
|
10
|
+
spec.email = %w(olol.toor@gmail.com co@rademade.com)
|
11
11
|
spec.summary = %q{Tiny rack middleware for image resizing.}
|
12
12
|
spec.description = %q{}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
13
|
+
spec.homepage = 'http://github.com/Rademade/light_resizer'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0")
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_dependency
|
21
|
+
spec.add_dependency 'rmagick', '>= 2.13'
|
22
|
+
spec.add_dependency 'rack', '>= 1.5'
|
23
23
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_development_dependency
|
24
|
+
spec.add_development_dependency 'bundler', '>= 1.5'
|
25
|
+
spec.add_development_dependency 'rake'
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
27
|
+
spec.add_development_dependency 'coveralls'
|
28
|
+
spec.add_development_dependency 'pry'
|
29
29
|
end
|
@@ -16,13 +16,13 @@ describe LightResizer::Middleware do
|
|
16
16
|
it 'should approve resize request' do
|
17
17
|
resizer.call(env)
|
18
18
|
|
19
|
-
expect(resizer.resize_request?).to
|
19
|
+
expect(resizer.resize_request?).to be_truthy
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should create resized image' do
|
23
|
-
expect(File.exist?(resize_full_path)).to
|
23
|
+
expect(File.exist?(resize_full_path)).to be_falsey
|
24
24
|
resizer.call(env)
|
25
|
-
expect(File.exist?(resize_full_path)).to
|
25
|
+
expect(File.exist?(resize_full_path)).to be_truthy
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -10,7 +10,7 @@ describe LightResizer::Middleware::Path do
|
|
10
10
|
path.request_path = '/some_dir/light_resize/150x150_image.png'
|
11
11
|
end
|
12
12
|
|
13
|
-
it { expect(path.image_path?).to
|
13
|
+
it { expect(path.image_path?).to be_truthy }
|
14
14
|
|
15
15
|
it { expect(path.image_path).to eq('/some_dir/image') }
|
16
16
|
|
@@ -27,9 +27,9 @@ describe LightResizer::Middleware::Path do
|
|
27
27
|
path.request_path = '/some_dir/light_resize/150x150_crop_convert_image.png'
|
28
28
|
end
|
29
29
|
|
30
|
-
it { expect(path.crop_path?).to
|
30
|
+
it { expect(path.crop_path?).to be_truthy }
|
31
31
|
|
32
|
-
it { expect(path.convert_path?).to
|
32
|
+
it { expect(path.convert_path?).to be_truthy }
|
33
33
|
|
34
34
|
it { expect(path.image_path).to eq('/some_dir/image') }
|
35
35
|
|
@@ -46,7 +46,7 @@ describe LightResizer::Middleware::Path do
|
|
46
46
|
path.request_path = '/asdada/123acad/some_dir/imdage.png'
|
47
47
|
end
|
48
48
|
|
49
|
-
it { expect(path.image_path?).to
|
49
|
+
it { expect(path.image_path?).to be_falsey }
|
50
50
|
|
51
51
|
end
|
52
52
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: light_resizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Sergienko
|
@@ -9,48 +9,48 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: rmagick
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: '2.13'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - ">="
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: '2.13'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: rack
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.5
|
34
|
+
version: '1.5'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 1.5
|
41
|
+
version: '1.5'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: bundler
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '1.5'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '1.5'
|
56
56
|
- !ruby/object:Gem::Dependency
|
@@ -71,16 +71,16 @@ dependencies:
|
|
71
71
|
name: rspec
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
76
|
+
version: '3.0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
83
|
+
version: '3.0'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: coveralls
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|