light_resizer 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|