dynamic_image 2.0.17 → 2.0.22

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a62dce84fcc98c58fd62f1a59ef08bb918cfe77c3441542959609b0eb8e6b5da
4
- data.tar.gz: 8dc11abb55c9cf425fd651f9017cd9477235bd712b185c268c36f36191833422
3
+ metadata.gz: bfb9c218b8902487079281c04685088ba37cee03ba5944425c8e391869ed1f54
4
+ data.tar.gz: 6be8904c347f0721fe0d52f4693c65c7a7c96d77d81b169c00b83859df46c741
5
5
  SHA512:
6
- metadata.gz: da083259103d212b5bc8909659b5e3110a18ac8ca34cc232c2a1d120e6927d8165ae04f9367661e96687cf43f1be9079002b54cd3947d9c5aa61d15eea5c44f7
7
- data.tar.gz: fe2692f3948999720c135ce33e94e979d945bf985617d852bb10bd972e917519ea03f3e3e321bce2677da9f88c7fd70aea4f86f4d4fda1373adf547658542fa0
6
+ metadata.gz: 712f4d5d9077baec9e3f67d01ae686a38ef380686a37a5c6c91b2e0d27db50e2623cd30c3b25e107a3b03fc6e0712fe20bc0643fc47ae73473ee735e94d031b5
7
+ data.tar.gz: 8ef5cd0021f2d32bc0876923c19f9e059edd5fdb52e06893cbab4dc4d739f72551f5bf53da8ee0007854f78d2cb5cc1de157542e40be9d27b17c6eeee735ccdb
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Version](https://img.shields.io/gem/v/dynamic_image.svg?style=flat)](https://rubygems.org/gems/dynamic_image)
2
- [![Build Status](https://travis-ci.org/elektronaut/dynamic_image.svg?branch=master)](https://travis-ci.org/elektronaut/dynamic_image)
2
+ ![Build](https://github.com/elektronaut/dynamic_image/workflows/Build/badge.svg)
3
3
  [![Code Climate](https://codeclimate.com/github/elektronaut/dynamic_image/badges/gpa.svg)](https://codeclimate.com/github/elektronaut/dynamic_image)
4
4
  [![Code Climate](https://codeclimate.com/github/elektronaut/dynamic_image/badges/coverage.svg)](https://codeclimate.com/github/elektronaut/dynamic_image)
5
5
  [![Inline docs](http://inch-ci.org/github/elektronaut/dynamic_image.svg)](http://inch-ci.org/github/elektronaut/dynamic_image)
@@ -15,9 +15,9 @@ uploaded, DynamicImage stores the original file and generates images
15
15
  on demand. It handles cropping, resizing, format and colorspace
16
16
  conversion.
17
17
 
18
- Supported formats at the moment are JPEG, PNG, GIF, BMP and TIFF. The
19
- latter will automatically be converted to JPG. CMYK images will be
20
- converted to RGB, and RGB images will be converted to the sRGB
18
+ Supported formats at the moment are JPEG, PNG, GIF, BMP, WebP and TIFF.
19
+ BMP, WebP and TIFF images will automatically be converted to JPG. CMYK
20
+ images will be converted to RGB, and RGB images will be converted to the sRGB
21
21
  colorspace for consistent appearance in all browsers.
22
22
 
23
23
  DynamicImage is built on [Dis](https://github.com/elektronaut/dis)
@@ -8,7 +8,7 @@ module DynamicImage
8
8
 
9
9
  module ClassMethods
10
10
  def belongs_to_image(name, scope = nil, **options)
11
- belongs_to(name, scope, options)
11
+ belongs_to(name, scope, **options)
12
12
 
13
13
  define_method "#{name}=" do |new_image|
14
14
  if new_image.present? && !new_image.is_a?(DynamicImage::Model)
@@ -59,7 +59,7 @@ module DynamicImage
59
59
  render(file: File.join(File.dirname(__FILE__), "templates/show"),
60
60
  layout: false, locals: { options: options })
61
61
  end
62
- format.any(:gif, :jpeg, :png, :tiff) do
62
+ format.any(:gif, :jpeg, :jpg, :png, :tiff, :webp) do
63
63
  send_image(DynamicImage::ProcessedImage.new(@record, options))
64
64
  end
65
65
  end
@@ -69,7 +69,7 @@ module DynamicImage
69
69
  return unless stale?(@record)
70
70
 
71
71
  respond_to do |format|
72
- format.any(:gif, :jpeg, :png, :tiff) do
72
+ format.any(:gif, :jpeg, :jpg, :png, :tiff, :webp) do
73
73
  send_data(@record.data,
74
74
  filename: filename,
75
75
  content_type: @record.content_type,
@@ -17,11 +17,21 @@ module DynamicImage
17
17
  end
18
18
  end
19
19
 
20
+ initializer "dynamic_image.mime_types" do
21
+ Mime::Type.register "image/bmp", :bmp
22
+ Mime::Type.register "image/gif", :gif
23
+ Mime::Type.register "image/jpeg", :jpg
24
+ Mime::Type.register "image/jpeg", :jpeg
25
+ Mime::Type.register "image/png", :png
26
+ Mime::Type.register "image/tiff", :tiff
27
+ Mime::Type.register "image/webp", :webp
28
+ end
29
+
20
30
  initializer "dynamic_image.extensions", before: :load_active_support do
21
31
  ActiveSupport.on_load(:active_record) do
22
32
  send :include, DynamicImage::BelongsTo
23
33
  end
24
- ActionDispatch::Routing::Mapper.send :include, DynamicImage::Routing
34
+ ActionDispatch::Routing::Mapper.include DynamicImage::Routing
25
35
 
26
36
  ActionDispatch::ExceptionWrapper.rescue_responses.merge!(
27
37
  "DynamicImage::Errors::InvalidSignature" => :unauthorized
@@ -11,7 +11,8 @@ module DynamicImage
11
11
  "\xff\xd8", # JPEG
12
12
  "\x49\x49\x2a\x00", # TIFF
13
13
  "\x4d\x4d\x00\x2a",
14
- "\x42\x4d" # BMP
14
+ "\x42\x4d", # BMP
15
+ "\x52\x49\x46\x46" # WEBP
15
16
  ].map { |s| s.dup.force_encoding("binary") }
16
17
  end
17
18
  end
@@ -149,8 +149,8 @@ module DynamicImage
149
149
  @uncropped
150
150
  end
151
151
 
152
- def vector(x, y)
153
- Vector2d.new(x, y)
152
+ def vector(width, height)
153
+ Vector2d.new(width, height)
154
154
  end
155
155
  end
156
156
  end
@@ -82,8 +82,8 @@ module DynamicImage
82
82
 
83
83
  private
84
84
 
85
- def vector(x, y)
86
- Vector2d.new(x, y)
85
+ def vector(width, height)
86
+ Vector2d.new(width, height)
87
87
  end
88
88
  end
89
89
  end
@@ -69,7 +69,8 @@ module DynamicImage
69
69
  image/jpeg
70
70
  image/pjpeg
71
71
  image/png
72
- image/tiff]
72
+ image/tiff
73
+ image/webp]
73
74
  end
74
75
  end
75
76
 
@@ -70,27 +70,30 @@ module DynamicImage
70
70
  private
71
71
 
72
72
  def coalesced(image)
73
- return image unless gif?
73
+ gif? ? DynamicImage::ImageReader.new(image.coalesce.to_blob).read : image
74
+ end
74
75
 
75
- DynamicImage::ImageReader.new(image.coalesce.to_blob).read
76
+ def create_variant(size)
77
+ record.variants.create(
78
+ variant_params(size).merge(filename: record.filename,
79
+ content_type: content_type,
80
+ data: crop_and_resize(size))
81
+ )
76
82
  end
77
83
 
78
84
  def crop_and_resize(size)
79
85
  normalized do |image|
80
- if record.cropped? || size != record.size
81
- image.crop(image_sizing.crop_geometry_string(size))
82
- image.resize(size)
83
- end
86
+ next unless record.cropped? || size != record.size
87
+
88
+ image.crop(image_sizing.crop_geometry_string(size))
89
+ image.resize(size)
84
90
  end
85
91
  end
86
92
 
87
93
  def find_or_create_variant(size)
88
- record.variants.find_by(variant_params(size)) ||
89
- record.variants.create(
90
- variant_params(size).merge(filename: record.filename,
91
- content_type: content_type,
92
- data: crop_and_resize(size))
93
- )
94
+ record.variants.find_by(variant_params(size)) || create_variant(size)
95
+ rescue ActiveRecord::RecordNotUnique
96
+ record.variants.find_by(variant_params(size))
94
97
  end
95
98
 
96
99
  def format
@@ -141,7 +144,8 @@ module DynamicImage
141
144
  "image/gif" => "GIF",
142
145
  "image/jpeg" => "JPEG",
143
146
  "image/pjpeg" => "JPEG",
144
- "image/tiff" => "TIFF" }[record.content_type]
147
+ "image/tiff" => "TIFF",
148
+ "image/webp" => "WEBP" }[record.content_type]
145
149
  end
146
150
 
147
151
  def require_valid_image!
@@ -151,12 +155,9 @@ module DynamicImage
151
155
  def variant_params(size)
152
156
  crop_size, crop_start = image_sizing.crop_geometry(size)
153
157
 
154
- { width: size.x,
155
- height: size.y,
156
- crop_width: crop_size.x,
157
- crop_height: crop_size.y,
158
- crop_start_x: crop_start.x,
159
- crop_start_y: crop_start.y,
158
+ { width: size.x.round, height: size.y.round,
159
+ crop_width: crop_size.x, crop_height: crop_size.y,
160
+ crop_start_x: crop_start.x, crop_start_y: crop_start.y,
160
161
  format: format }
161
162
  end
162
163
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DynamicImage
4
- VERSION = "2.0.17"
4
+ VERSION = "2.0.22"
5
5
  end
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic_image
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.17
4
+ version: 2.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Inge Jørgensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-08 00:00:00.000000000 Z
11
+ date: 2020-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dis
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 1.0.6
20
17
  - - "~>"
21
18
  - !ruby/object:Gem::Version
22
19
  version: '1.1'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.6
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 1.0.6
30
27
  - - "~>"
31
28
  - !ruby/object:Gem::Version
32
29
  version: '1.1'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.6
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: mini_magick
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -48,14 +48,14 @@ dependencies:
48
48
  name: rails
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '5.0'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - "~>"
58
+ - - ">"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '5.0'
61
61
  - !ruby/object:Gem::Dependency
@@ -78,6 +78,20 @@ dependencies:
78
78
  - - ">="
79
79
  - !ruby/object:Gem::Version
80
80
  version: 2.2.1
81
+ - !ruby/object:Gem::Dependency
82
+ name: rails-controller-testing
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
81
95
  - !ruby/object:Gem::Dependency
82
96
  name: rspec-rails
83
97
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +106,20 @@ dependencies:
92
106
  - - "~>"
93
107
  - !ruby/object:Gem::Version
94
108
  version: 3.7.0
109
+ - !ruby/object:Gem::Dependency
110
+ name: simplecov
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: 0.17.1
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: 0.17.1
95
123
  - !ruby/object:Gem::Dependency
96
124
  name: sqlite3
97
125
  requirement: !ruby/object:Gem::Requirement
@@ -157,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
185
  - !ruby/object:Gem::Version
158
186
  version: '0'
159
187
  requirements: []
160
- rubygems_version: 3.0.1
188
+ rubygems_version: 3.1.2
161
189
  signing_key:
162
190
  specification_version: 4
163
191
  summary: Rails plugin that simplifies image uploading and processing