pura-image 0.2.3 → 0.3.0

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
  SHA256:
3
- metadata.gz: a6561b3b8ec72933d8b01613638ae8e767e3948c402831bf8f401c9985525990
4
- data.tar.gz: 386ef6ed67ed028cb82e630859826b7c4d43689c93923b96141febd65b0f0cfd
3
+ metadata.gz: 200a23ef9a4ba80b7499eee4b910eaf6e34c40bf8ad3eec6cdf98b579388ccd9
4
+ data.tar.gz: 277147726deb52d9db3b63fa91968c71af2b4eaf672ba8fe8c582e9f8ddeea5e
5
5
  SHA512:
6
- metadata.gz: 82d791ee984e2d7d014ac2a3f62c8cbfa9ad59135b2a06c0c10d2ca86ae401c57ac271520a1828a590f251a1f8e8bc51748dd8e09b41d766dbe9aad00c3c6b8b
7
- data.tar.gz: 65cd7a61332dd414f53f3f12366c23844292b955ac5e032675871af36e68c5a96de54c7d84d2c40df26680768d0e794b8e8c977295fec53cf5e634c5292211b6
6
+ metadata.gz: e638cbec0e311ea2b6443319c264f45b1453481dac6f86a4f7ca47dd726c1f60527c58edd627801505a5c243702e058d21023c79f05dafaa1ed8e3b7b3c8e814
7
+ data.tar.gz: d3fb43c72fd71a8ebf8947759ecd672ef9789b63c563dc81ddd63da17f44b2685f1edfadf655e75e7e9b68d5af146c5f56975676024873f56083216eca6b4cda
data/README.md CHANGED
@@ -2,6 +2,32 @@
2
2
 
3
3
  Pure Ruby image processing library with **zero C extension dependencies**. Bundles all **pura-*** format gems and provides an `ImageProcessing` adapter for Rails Active Storage.
4
4
 
5
+ ## Why this exists (in 30 seconds)
6
+
7
+ Stop installing system libraries just to resize an image in Rails.
8
+
9
+ ```diff
10
+ # Gemfile
11
+ + gem "pura-image"
12
+ ```
13
+
14
+ ```ruby
15
+ # config/application.rb
16
+ config.active_storage.variant_processor = :pura
17
+ ```
18
+
19
+ ```diff
20
+ # Dockerfile
21
+ - RUN apt-get install -y libvips-dev imagemagick
22
+ ```
23
+
24
+ That's it. No `brew install vips`. No `apt install imagemagick`. No C compiler. Works on macOS, Linux, Windows, Docker, CI, ruby.wasm — anywhere Ruby runs.
25
+
26
+ - ✅ **Drop-in** for `ImageProcessing::Vips` / `ImageProcessing::MiniMagick`
27
+ - ✅ **7 formats** — JPEG, PNG, BMP, GIF, TIFF, ICO/CUR, WebP
28
+ - ✅ **Some operations are faster than C** (no process-spawn overhead — see [Benchmark](#benchmark))
29
+ - ✅ **Runs on ruby.wasm, JRuby, TruffleRuby**
30
+
5
31
  ## Supported Formats
6
32
 
7
33
  | Format | Decode | Encode | Gem |
@@ -29,7 +55,7 @@ require "pura-image"
29
55
 
30
56
  # Load any format (auto-detected from magic bytes)
31
57
  image = Pura::Image.load("photo.jpg")
32
- image = Pura::Image.load("icon.webp")
58
+ image = Pura::Image.load("logo.png")
33
59
  image.width #=> 800
34
60
  image.height #=> 600
35
61
 
@@ -75,7 +101,6 @@ Drop-in replacement for libvips/ImageMagick:
75
101
 
76
102
  ```ruby
77
103
  # Gemfile
78
- gem "image_processing"
79
104
  gem "pura-image"
80
105
 
81
106
  # config/application.rb
@@ -132,7 +157,6 @@ ImageProcessing::Pura.valid_image?("photo.jpg") #=> true
132
157
  | BMP | **39 ms** | 59 ms | 🚀 **1.5× faster** |
133
158
  | GIF | 77 ms | 65 ms | ~1× (comparable) |
134
159
  | PNG | 111 ms | 60 ms | 1.9× slower |
135
- | WebP | 207 ms | 66 ms | 3.1× slower |
136
160
  | JPEG | 304 ms | 55 ms | 5.5× slower |
137
161
 
138
162
  ### Encode
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "image_processing"
3
+ require "pura/processing"
4
4
 
5
5
  require_relative "../pura-image"
6
6
 
7
7
  module ImageProcessing
8
8
  module Pura
9
- extend Chainable
9
+ extend ::Pura::Processing::Chainable
10
10
 
11
11
  def self.valid_image?(file)
12
12
  path = file.respond_to?(:path) ? file.path : file.to_s
@@ -20,7 +20,7 @@ module ImageProcessing
20
20
  false
21
21
  end
22
22
 
23
- class Processor < ImageProcessing::Processor
23
+ class Processor < ::Pura::Processing::Processor
24
24
  accumulator :image, ::Pura::Image::Wrapper
25
25
 
26
26
  def self.supports_resize_on_load?
@@ -35,7 +35,7 @@ module ImageProcessing
35
35
  elsif path_or_image.respond_to?(:path)
36
36
  ::Pura::Image::Processor.load(path_or_image.path)
37
37
  else
38
- raise ImageProcessing::Error, "unsupported source: #{path_or_image.inspect}"
38
+ raise ::Pura::Processing::Error, "unsupported source: #{path_or_image.inspect}"
39
39
  end
40
40
  end
41
41
 
@@ -86,7 +86,7 @@ module Pura
86
86
  when :tiff then Pura::Tiff.decode(path)
87
87
  when :ico then Pura::Ico.decode(path)
88
88
  when :webp
89
- raise ArgumentError, "WebP support not available" unless defined?(Pura::Webp)
89
+ raise ArgumentError, "WebP support requires the pura-webp gem" unless defined?(Pura::Webp)
90
90
 
91
91
  Pura::Webp.decode(path)
92
92
  else
@@ -114,7 +114,7 @@ module Pura
114
114
  ico_img = Pura::Ico::Image.new(image.width, image.height, image.pixels)
115
115
  Pura::Ico.encode(ico_img, path)
116
116
  when :webp
117
- raise ArgumentError, "WebP encoding not available" unless defined?(Pura::Webp)
117
+ raise ArgumentError, "WebP support requires the pura-webp gem" unless defined?(Pura::Webp)
118
118
 
119
119
  webp_img = Pura::Webp::Image.new(image.width, image.height, image.pixels)
120
120
  Pura::Webp.encode(webp_img, path, **options)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Pura
4
4
  module Image
5
- VERSION = "0.2.3"
5
+ VERSION = "0.3.0"
6
6
  end
7
7
  end
data/lib/pura-image.rb CHANGED
@@ -9,7 +9,7 @@ require "pura-ico"
9
9
  begin
10
10
  require "pura-webp"
11
11
  rescue LoadError
12
- # pura-webp is optional
12
+ # pura-webp is optional — install the gem to enable WebP support.
13
13
  end
14
14
 
15
15
  require_relative "pura/image/version"
data/pura-image.gemspec CHANGED
@@ -26,7 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "pura-gif", "~> 0.1"
27
27
  spec.add_dependency "pura-tiff", "~> 0.1"
28
28
  spec.add_dependency "pura-ico", "~> 0.1"
29
- spec.add_dependency "image_processing", "~> 1.2"
29
+ spec.add_dependency "pura-webp", "~> 0.2"
30
+ spec.add_dependency "pura-processing", "~> 0.1"
30
31
  spec.add_development_dependency "minitest", "~> 5.0"
31
32
  spec.add_development_dependency "rake", "~> 13.0"
32
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pura-image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - komagata
@@ -94,19 +94,33 @@ dependencies:
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0.1'
96
96
  - !ruby/object:Gem::Dependency
97
- name: image_processing
97
+ name: pura-webp
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '1.2'
102
+ version: '0.2'
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '1.2'
109
+ version: '0.2'
110
+ - !ruby/object:Gem::Dependency
111
+ name: pura-processing
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.1'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.1'
110
124
  - !ruby/object:Gem::Dependency
111
125
  name: minitest
112
126
  requirement: !ruby/object:Gem::Requirement