mountable_image_server 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/README.md +5 -1
- data/lib/mountable_image_server/image_processor.rb +40 -7
- data/lib/mountable_image_server/version.rb +1 -1
- data/mountable_image_server.gemspec +2 -2
- data/shell.nix +27 -0
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 63c63a9eab25e840d81dffc313e19a280367674550cb7e985b6d5a5c1947e060
|
4
|
+
data.tar.gz: ff7b2820a0a88aebd46245e0089271c527ae7823ca274ad74625ae5db88ad3fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c7d3c782dd5f6d86781be932683afa8be1a58ff83f9ff9c9d54865c74853f143f905c4390d6ae20e797401b1aecf9d42cbadaf85689dc08942abcd4c3e620dc
|
7
|
+
data.tar.gz: 4acd2cd370f9e7f085fd19d9caa87dfcea39b5443ba89d05f641ccbb77b923c28366dc728bbe6d1359ad8b20b9e29de029df3bb2179360523061fb09d46463a5
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -6,14 +6,22 @@ module MountableImageServer
|
|
6
6
|
class ImageProcessor
|
7
7
|
include Skeptick
|
8
8
|
|
9
|
-
|
9
|
+
# Accepted parameters and values:
|
10
|
+
# `fit` - Approach how to interpret width and height, use 'crop' (cropping) or 'clip' (resizing)
|
11
|
+
# `w` - Width of image in pixels
|
12
|
+
# `h` - Height of image in pixels
|
13
|
+
# `q` - Quality of image, use value between 0 (worst) and 100 (best)
|
14
|
+
# `darken` - Blends image with black color, use value between 0 (no black) and 100 (completely black)
|
15
|
+
# `fm` - Format of image, use 'jpg', 'png', 'gif', ...
|
16
|
+
VALID_PARAMETERS = [:fit, :w, :h, :q, :darken, :fm]
|
10
17
|
|
11
18
|
def initialize(path, parameters)
|
12
19
|
@path = path
|
20
|
+
@file_format = path.extname.downcase.scan(/[^\.]+/).last
|
13
21
|
@parameters = parameters.select do |key, value|
|
14
|
-
VALID_PARAMETERS.include?(key.to_sym)
|
22
|
+
VALID_PARAMETERS.include?(key.to_sym) && value =~ /\S+/
|
15
23
|
end.map do |key, value|
|
16
|
-
[key.to_sym, value]
|
24
|
+
[key.to_sym, value.strip.downcase]
|
17
25
|
end.to_h
|
18
26
|
end
|
19
27
|
|
@@ -22,15 +30,32 @@ module MountableImageServer
|
|
22
30
|
|
23
31
|
parameters[:fit] ||= 'clip'
|
24
32
|
|
33
|
+
if parameters[:fm] && parameters[:fm] == file_format
|
34
|
+
parameters.delete(:fm)
|
35
|
+
end
|
36
|
+
|
37
|
+
if parameters[:fm]
|
38
|
+
extension = ".#{parameters[:fm]}"
|
39
|
+
else
|
40
|
+
extension = ".#{file_format}"
|
41
|
+
end
|
42
|
+
|
43
|
+
if parameters[:fm] && parameters[:fm] != file_format && file_format == 'gif'
|
44
|
+
input_path = "#{path}[0]"
|
45
|
+
else
|
46
|
+
input_path = path
|
47
|
+
end
|
48
|
+
|
25
49
|
operations_queue = [
|
50
|
+
format_operations,
|
26
51
|
resize_operations,
|
27
52
|
crop_operations,
|
28
53
|
quality_operations,
|
29
|
-
darken_operations
|
54
|
+
darken_operations,
|
30
55
|
].reduce([], :+)
|
31
56
|
|
32
|
-
Tempfile.create(['processed-image',
|
33
|
-
command = convert(
|
57
|
+
Tempfile.create(['processed-image', extension]) do |file|
|
58
|
+
command = convert(input_path, to: file.path) do
|
34
59
|
operations_queue.each do |operation|
|
35
60
|
set *operation
|
36
61
|
end
|
@@ -43,7 +68,7 @@ module MountableImageServer
|
|
43
68
|
end
|
44
69
|
|
45
70
|
private
|
46
|
-
attr_reader :parameters, :path
|
71
|
+
attr_reader :parameters, :path, :file_format
|
47
72
|
|
48
73
|
def darken_operations
|
49
74
|
return [] unless parameters[:darken]
|
@@ -79,5 +104,13 @@ module MountableImageServer
|
|
79
104
|
[:quality, parameters[:q]]
|
80
105
|
]
|
81
106
|
end
|
107
|
+
|
108
|
+
def format_operations
|
109
|
+
return [] unless parameters[:fm]
|
110
|
+
|
111
|
+
[
|
112
|
+
[:format, parameters[:fm]]
|
113
|
+
]
|
114
|
+
end
|
82
115
|
end
|
83
116
|
end
|
@@ -19,12 +19,12 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_development_dependency "bundler", "~> 1
|
22
|
+
spec.add_development_dependency "bundler", "~> 2.1"
|
23
23
|
spec.add_development_dependency "rake", "~> 10.0"
|
24
24
|
spec.add_development_dependency "minitest", "~> 5.0"
|
25
25
|
spec.add_development_dependency "rack-test", "~> 0.6.3"
|
26
26
|
|
27
27
|
spec.add_runtime_dependency "sinatra", "~> 2.0.0.rc1"
|
28
|
-
spec.add_runtime_dependency "dry-configurable", "
|
28
|
+
spec.add_runtime_dependency "dry-configurable", ">= 0.1.6"
|
29
29
|
spec.add_runtime_dependency "skeptick", "~> 0.2.1"
|
30
30
|
end
|
data/shell.nix
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
{
|
2
|
+
pkgs ? import (fetchGit {
|
3
|
+
url = https://github.com/NixOS/nixpkgs-channels;
|
4
|
+
ref = "nixos-20.03";
|
5
|
+
}) {},
|
6
|
+
ruby ? pkgs.ruby_2_5,
|
7
|
+
bundler ? pkgs.bundler.override { inherit ruby; }
|
8
|
+
}:
|
9
|
+
|
10
|
+
pkgs.mkShell {
|
11
|
+
buildInputs = with pkgs; [
|
12
|
+
ruby
|
13
|
+
bundler
|
14
|
+
git
|
15
|
+
sqlite
|
16
|
+
zlib
|
17
|
+
phantomjs
|
18
|
+
rubyPackages_2_5.nokogiri
|
19
|
+
libiconv
|
20
|
+
];
|
21
|
+
|
22
|
+
shellHook = ''
|
23
|
+
mkdir -p .local-data/gems
|
24
|
+
export GEM_HOME=$PWD/.local-data/gems
|
25
|
+
export GEM_PATH=$GEM_HOME
|
26
|
+
'';
|
27
|
+
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mountable_image_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Strauß
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 1970-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1
|
19
|
+
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1
|
26
|
+
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,14 +84,14 @@ dependencies:
|
|
84
84
|
name: dry-configurable
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 0.1.6
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.1.6
|
97
97
|
- !ruby/object:Gem::Dependency
|
@@ -131,6 +131,7 @@ files:
|
|
131
131
|
- lib/mountable_image_server/server.rb
|
132
132
|
- lib/mountable_image_server/version.rb
|
133
133
|
- mountable_image_server.gemspec
|
134
|
+
- shell.nix
|
134
135
|
homepage: https://github.com/stravid/mountable_image_server
|
135
136
|
licenses:
|
136
137
|
- MIT
|
@@ -150,8 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
151
|
- !ruby/object:Gem::Version
|
151
152
|
version: '0'
|
152
153
|
requirements: []
|
153
|
-
|
154
|
-
rubygems_version: 2.5.1
|
154
|
+
rubygems_version: 3.1.2
|
155
155
|
signing_key:
|
156
156
|
specification_version: 4
|
157
157
|
summary: Simple mountable server for processing images on the fly.
|