carrierwave-crop-on-fly 0.0.4 → 0.0.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae1c3a2e5a28db8ec8637636e47c30ce399cec08
4
- data.tar.gz: 774ed5cf3dcea2d7449ecf19b4182d3d3cee036b
3
+ metadata.gz: f927f9ed855671678507c3161d27858bf319b856
4
+ data.tar.gz: 1e7f42e6eaa650022d24d1d2779c1fdb2fe7f012
5
5
  SHA512:
6
- metadata.gz: 984cf12d64ed99cecd102d500c7158629b765046fc90b6c353736eb79b553fc9e5e3e1443a8866353f0cc44066fd39241a8af3299f29fafac5369195d437edb4
7
- data.tar.gz: 7b6dd94b32cc06e866c83a276664b910dceaf9a7c7590ab8691ce71e640410c4b8c73b7f7e5583aaef9e47dfb5d745470fe7bd4ab6596577a6250c5bac9ff8d3
6
+ metadata.gz: 63b28fa20eb4e74a03efaae32e3f8f10ab17ea4816dcaf34f93fe0dfcdd9d32b0a0a78e23e5e02eef31356f093f805046b82036bc6217604057e03e9030427f4
7
+ data.tar.gz: 203a5878dabdcbc68b539e2959e89203f5f7242555a239f111b73cddc3410d6fbc4bd5602a9333565713d57190a6de3ffb7bf57aa1978ea5562328a808a7e7ba
data/README.md CHANGED
@@ -8,19 +8,33 @@ this gem based on [carrierwave-crop](https://github.com/kirtithorat/carrierwave-
8
8
 
9
9
  Install the latest stable release:
10
10
 
11
+ ```Shell
11
12
  $[sudo] gem install carrierwave-crop-on-fly
13
+ ```
12
14
 
13
15
  In Rails, add it to your Gemfile:
14
16
 
17
+ ```Ruby
15
18
  gem 'carrierwave-crop-on-fly'
19
+ ```
16
20
 
17
- Also you must add mini_magick gem
21
+ Also you must add mini_magick or rmagick gem
18
22
 
23
+ ```Ruby
19
24
  gem 'mini_magick'
25
+ ```
26
+
27
+ or
28
+
29
+ ```Ruby
30
+ gem 'rmagick'
31
+ ```
20
32
 
21
33
  And then execute:
22
34
 
35
+ ```Shell
23
36
  $ bundle
37
+ ```
24
38
 
25
39
  Finally, restart the server to apply the changes.
26
40
 
@@ -30,6 +44,7 @@ Add the required files in assets
30
44
 
31
45
  In .js file
32
46
 
47
+ ```javascript
33
48
  //= require jquery
34
49
  //= require jcrop.js
35
50
  //= require_self
@@ -37,35 +52,48 @@ In .js file
37
52
  $(document).ready(function() {
38
53
  document.jcrop.init({ file_input_id: 'user_avatar' });
39
54
  });
55
+ ```
40
56
 
41
57
  In .css file
42
58
 
59
+ ```css
43
60
  *= require jquery.jcrop
44
61
  *= require jcrop_fix
62
+ ```
45
63
 
46
64
  ## Usage
47
65
 
48
66
  Open your model file and add the CarrierWave uploader:
49
67
 
68
+ ```Ruby
50
69
  class User < ActiveRecord::Base
51
70
  mount_uploader :avatar, AvatarUploader
52
71
  end
72
+ ```
53
73
 
54
74
  In the CarrierWave uploader:
55
75
 
56
- class BaseUploader < CarrierWave::Uploader::Base
76
+ ```Ruby
77
+ class AvatarUploader < CarrierWave::Uploader::Base
78
+ # use mini_magick
57
79
  include CarrierWave::MiniMagick
80
+ # or you may use rmagick:
81
+ # include CarrierWave::RMagick
82
+
58
83
  process crop: [100, 100]
59
84
  end
85
+ ```
60
86
 
61
87
  In the view:
62
88
 
89
+ ```erb
63
90
  <%= form_for @user do |f| %>
64
91
  <%= f.file_field :avatar %>
65
92
  <%= f.cropbox :avatar, width: 300, height: 300 %>
66
93
  <%= f.previewbox :avatar %>
67
94
  <%= f.submit 'Crop' %>
68
95
  <% end %>
96
+ ```
69
97
 
70
98
  ### Credits and resources
71
99
  * [CarrierWave](https://github.com/carrierwaveuploader/carrierwave)
@@ -6,26 +6,33 @@ module CarrierWave
6
6
  # Resizes the original image to 600x600 and then performs cropping
7
7
  # process crop: [600, 600]
8
8
  def crop(width = nil, height = nil)
9
- if self.respond_to? "resize_to_limit"
10
- begin
11
- manipulate! do |img|
12
- if crop_w.present? && crop_h.present?
13
- w = crop_w
14
- h = crop_h
15
- else
16
- orig_w = img['width']
17
- orig_h = img['height']
9
+ raise_missing_processor unless defined?(CarrierWave::MiniMagick) || defined?(CarrierWave::RMagick)
18
10
 
19
- ratio = width.to_f / height
20
- orig_ratio = orig_w / orig_h
11
+ proc = ->(original_height, original_width) do
12
+ if crop_w.present? && crop_h.present?
13
+ w = crop_w
14
+ h = crop_h
15
+ else
16
+ ratio = width.to_f / height
17
+ orig_ratio = original_height / original_width
21
18
 
22
- w = h = [orig_w, orig_h].min
23
- if ratio < orig_ratio
24
- w = orig_h * ratio
25
- elsif ratio > orig_ratio
26
- h = orig_w * ratio
27
- end
28
- end
19
+ w = h = [original_height, original_width].min
20
+ if ratio < orig_ratio
21
+ w = original_width * ratio
22
+ elsif ratio > orig_ratio
23
+ h = original_height * ratio
24
+ end
25
+ end
26
+
27
+ { width: w, height: h }
28
+ end
29
+
30
+ if self.is_a?(CarrierWave::MiniMagick)
31
+ begin
32
+ manipulate! do |img|
33
+ sizes = proc.call(img['width'], img['height'])
34
+ h = sizes[:height]
35
+ w = sizes[:width]
29
36
 
30
37
  if crop_x.blank? && crop_y.blank?
31
38
  img.combine_options do |op|
@@ -43,18 +50,34 @@ module CarrierWave
43
50
  raise CarrierWave::Crop::ProcessingError, "Failed to crop - #{e.message}"
44
51
  end
45
52
 
53
+ elsif self.is_a?(CarrierWave::RMagick)
54
+ begin
55
+ manipulate! do |img|
56
+ sizes = proc.call(img.columns, img.rows)
57
+ h = sizes[:height]
58
+ w = sizes[:width]
59
+
60
+ if crop_x.blank? && crop_y.blank?
61
+ img.crop! 'Center', 0, 0, w.to_i, h.to_i
62
+ else
63
+ img.crop! crop_x.to_i, crop_y.to_i, w.to_i, h.to_i
64
+ end
65
+ img.resize! width, height
66
+ end
67
+
68
+ rescue Exception => e
69
+ raise CarrierWave::Crop::ProcessingError, "Failed to crop - #{e.message}"
70
+ end
46
71
  else
47
- raise CarrierWave::Crop::MissingProcessorError, "Failed to crop #{attachment}. Add mini_magick."
72
+ raise_missing_processor
48
73
  end
49
74
  end
50
75
 
51
- # Checks if the attachment received cropping attributes
52
- # @param attachment [Symbol] Name of the attribute to be croppedv
53
- #
54
- # @return [Boolean]
55
- # def cropping?
56
- # crop_x.present? && crop_y.present? && crop_w.present? && crop_h.present?
57
- # end
76
+ private
77
+
78
+ def raise_missing_processor
79
+ raise CarrierWave::Crop::MissingProcessorError, "Failed to crop #{attachment}. Add mini_magick or rmagick."
80
+ end
58
81
 
59
82
  end ## End of UploaderAdditions
60
83
  end ## End of Crop
@@ -1,5 +1,5 @@
1
1
  module CarrierWave
2
2
  module Crop
3
- VERSION = '0.0.4'
3
+ VERSION = '0.0.5'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave-crop-on-fly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - evg2108
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-24 00:00:00.000000000 Z
11
+ date: 2015-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  requirements: []
99
99
  rubyforge_project:
100
- rubygems_version: 2.4.5
100
+ rubygems_version: 2.4.6
101
101
  signing_key:
102
102
  specification_version: 4
103
103
  summary: CarrierWave extension for on fly specifying crop area with preview and cropping