pura-image 0.2.3 → 0.2.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 +4 -4
- data/README.md +28 -2
- data/lib/pura/image/processor.rb +2 -2
- data/lib/pura/image/version.rb +1 -1
- data/lib/pura-image.rb +1 -1
- data/pura-image.gemspec +1 -0
- metadata +15 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5349acbd820a01a5adce41d49add96c50a8e91adc2555629e62268c0876531a5
|
|
4
|
+
data.tar.gz: 293af000448458dbb3554cf203b0eeccc8432516a768116cb7dab56a3a9a3472
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 06aca37f6a3f060428b1f61dc62ceb39b073b71b7b5f8c3337d451bdc1aa0e95bd3c5b6ffb2a4f9cd610ec73f6e51bf55cadbaa61b1f7a016a705173d2f97bfd
|
|
7
|
+
data.tar.gz: 1864fdfa00abf7767c15c755a4d89211639695448192a0cee09b487029ebefd8096b4fb95d00d9c88de776c44f24ba900060a918c0f18344717b489c6b8594df
|
data/README.md
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
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 "image_processing"
|
|
12
|
+
+ gem "pura-image"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
```ruby
|
|
16
|
+
# config/application.rb
|
|
17
|
+
config.active_storage.variant_processor = :pura
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```diff
|
|
21
|
+
# Dockerfile
|
|
22
|
+
- RUN apt-get install -y libvips-dev imagemagick
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
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.
|
|
26
|
+
|
|
27
|
+
- ✅ **Drop-in** for `ImageProcessing::Vips` / `ImageProcessing::MiniMagick`
|
|
28
|
+
- ✅ **7 formats** — JPEG, PNG, BMP, GIF, TIFF, ICO/CUR, WebP
|
|
29
|
+
- ✅ **Some operations are faster than C** (no process-spawn overhead — see [Benchmark](#benchmark))
|
|
30
|
+
- ✅ **Runs on ruby.wasm, JRuby, TruffleRuby**
|
|
31
|
+
|
|
5
32
|
## Supported Formats
|
|
6
33
|
|
|
7
34
|
| Format | Decode | Encode | Gem |
|
|
@@ -29,7 +56,7 @@ require "pura-image"
|
|
|
29
56
|
|
|
30
57
|
# Load any format (auto-detected from magic bytes)
|
|
31
58
|
image = Pura::Image.load("photo.jpg")
|
|
32
|
-
image = Pura::Image.load("
|
|
59
|
+
image = Pura::Image.load("logo.png")
|
|
33
60
|
image.width #=> 800
|
|
34
61
|
image.height #=> 600
|
|
35
62
|
|
|
@@ -132,7 +159,6 @@ ImageProcessing::Pura.valid_image?("photo.jpg") #=> true
|
|
|
132
159
|
| BMP | **39 ms** | 59 ms | 🚀 **1.5× faster** |
|
|
133
160
|
| GIF | 77 ms | 65 ms | ~1× (comparable) |
|
|
134
161
|
| PNG | 111 ms | 60 ms | 1.9× slower |
|
|
135
|
-
| WebP | 207 ms | 66 ms | 3.1× slower |
|
|
136
162
|
| JPEG | 304 ms | 55 ms | 5.5× slower |
|
|
137
163
|
|
|
138
164
|
### Encode
|
data/lib/pura/image/processor.rb
CHANGED
|
@@ -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
|
|
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
|
|
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)
|
data/lib/pura/image/version.rb
CHANGED
data/lib/pura-image.rb
CHANGED
data/pura-image.gemspec
CHANGED
|
@@ -26,6 +26,7 @@ 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 "pura-webp", "~> 0.2"
|
|
29
30
|
spec.add_dependency "image_processing", "~> 1.2"
|
|
30
31
|
spec.add_development_dependency "minitest", "~> 5.0"
|
|
31
32
|
spec.add_development_dependency "rake", "~> 13.0"
|
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.
|
|
4
|
+
version: 0.2.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- komagata
|
|
@@ -93,6 +93,20 @@ dependencies:
|
|
|
93
93
|
- - "~>"
|
|
94
94
|
- !ruby/object:Gem::Version
|
|
95
95
|
version: '0.1'
|
|
96
|
+
- !ruby/object:Gem::Dependency
|
|
97
|
+
name: pura-webp
|
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - "~>"
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '0.2'
|
|
103
|
+
type: :runtime
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - "~>"
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0.2'
|
|
96
110
|
- !ruby/object:Gem::Dependency
|
|
97
111
|
name: image_processing
|
|
98
112
|
requirement: !ruby/object:Gem::Requirement
|