ruby-vips 2.1.4 → 2.2.1
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/.github/dependabot.yml +6 -0
- data/.github/workflows/test.yml +12 -11
- data/CHANGELOG.md +19 -0
- data/README.md +18 -18
- data/TODO +1 -2
- data/VERSION +1 -1
- data/example/revalidate.rb +39 -0
- data/lib/vips/image.rb +10 -3
- data/lib/vips/interpolate.rb +3 -3
- data/lib/vips/methods.rb +544 -325
- data/lib/vips/mutableimage.rb +8 -1
- data/lib/vips/operation.rb +16 -11
- data/lib/vips/region.rb +3 -3
- data/lib/vips/sourcecustom.rb +1 -1
- data/lib/vips/targetcustom.rb +1 -1
- data/lib/vips/version.rb +1 -1
- data/lib/vips.rb +110 -2
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: faf388c9ee4f7b130b34c0a30954da1d9efd08b09799befe88d676bca7c79f64
|
4
|
+
data.tar.gz: 015463ac062367c72195e8349669c8ed80123c81cb88710951130d030b6a4018
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e05333180a545ecae8a7aa4da0a0fa1382e2b8e0233338b2e818cfcaa7de6e2a14c9be0d6f11510393ffb4343e5ad84a7100ba665c158546fd8dfcb71e83462e
|
7
|
+
data.tar.gz: b4edb03ea9b62fd30c41fc51bb9cfb94214b4929e83df24c62742de63f7dbff1d13220e57a234da8592816f33e09f0122a9a60c790c9d459b236e655c7691467
|
data/.github/workflows/test.yml
CHANGED
@@ -20,7 +20,7 @@ jobs:
|
|
20
20
|
|
21
21
|
steps:
|
22
22
|
- name: Checkout code
|
23
|
-
uses: actions/checkout@
|
23
|
+
uses: actions/checkout@v4
|
24
24
|
|
25
25
|
- name: Set up Ruby
|
26
26
|
uses: ruby/setup-ruby@v1
|
@@ -38,15 +38,16 @@ jobs:
|
|
38
38
|
matrix:
|
39
39
|
os-version: [ 'ubuntu-20.04' ]
|
40
40
|
ruby-version:
|
41
|
-
- 2.
|
42
|
-
- 2.
|
43
|
-
- 2.
|
44
|
-
- 2.
|
45
|
-
- 2.
|
46
|
-
- 2.
|
47
|
-
- 2.
|
48
|
-
-
|
49
|
-
- 3.
|
41
|
+
- '2.1'
|
42
|
+
- '2.2'
|
43
|
+
- '2.3'
|
44
|
+
- '2.4'
|
45
|
+
- '2.5'
|
46
|
+
- '2.6'
|
47
|
+
- '2.7'
|
48
|
+
- '3.0'
|
49
|
+
- '3.1'
|
50
|
+
- '3.2'
|
50
51
|
- jruby
|
51
52
|
fail-fast: true
|
52
53
|
|
@@ -54,7 +55,7 @@ jobs:
|
|
54
55
|
|
55
56
|
steps:
|
56
57
|
- name: Checkout code
|
57
|
-
uses: actions/checkout@
|
58
|
+
uses: actions/checkout@v4
|
58
59
|
|
59
60
|
- name: Set up Ruby
|
60
61
|
uses: ruby/setup-ruby@v1
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,25 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## Version 2.2.1 (2023-02-21)
|
6
|
+
|
7
|
+
* add `Vips.block_untrusted` method to block all untrusted operations. Only for libvips >= 8.13. [Docs](https://www.libvips.org/API/current/libvips-vips.html#vips-block-untrusted-set). [#382](https://github.com/libvips/ruby-vips/pull/382) [aglushkov](https://github.com/aglushkov)
|
8
|
+
* add `Vips.block` method to block specific operation. Only for libvips >= 8.13. [Docs](https://www.libvips.org/API/current/VipsOperation.html#vips-operation-block-set). [#382](https://github.com/libvips/ruby-vips/pull/382) [aglushkov](https://github.com/aglushkov)
|
9
|
+
* `new_from_source` keeps a ref to the source object [taylorthurlow]
|
10
|
+
* some fixes to object references system
|
11
|
+
|
12
|
+
## Version 2.2.0 (2023-10-18)
|
13
|
+
|
14
|
+
* add `draw_point!` [jcupitt]
|
15
|
+
* add `Vips.tracked_*` for getting file and memory metrics [jeremy]
|
16
|
+
* add `Vips.cache_*` for getting cache settings [jeremy]
|
17
|
+
* add `Vips.vector?` to get/set SIMD status [jeremy]
|
18
|
+
* add `Vips.concurrency` to get/set threadpool size [jeremy]
|
19
|
+
* add `Vips.concurrency_default` to get the default threadpool size [jeremy]
|
20
|
+
* fix targetcustom spec test with libvips 8.13 [lucaskanashiro]
|
21
|
+
* add ruby 3.2 to CI [petergoldstein]
|
22
|
+
* update docs for libvips 8.15 [jcupitt]
|
23
|
+
|
5
24
|
## Version 2.1.4 (2021-10-28)
|
6
25
|
|
7
26
|
* `write_to_buffer` tries to use the new target API, then falls back to the old
|
data/README.md
CHANGED
@@ -4,7 +4,10 @@
|
|
4
4
|
[](https://github.com/libvips/ruby-vips/actions?query=workflow%3ATest)
|
5
5
|
|
6
6
|
This gem is a Ruby binding for the [libvips image processing
|
7
|
-
library](https://libvips.github.io/libvips).
|
7
|
+
library](https://libvips.github.io/libvips). It has been tested on
|
8
|
+
Linux, macOS and Windows, and with ruby 2, ruby 3 and jruby. It uses
|
9
|
+
[ruby-ffi](https://github.com/ffi/ffi) to call functions in the libvips
|
10
|
+
library.
|
8
11
|
|
9
12
|
libvips is a [demand-driven, horizontally
|
10
13
|
threaded](https://github.com/libvips/libvips/wiki/Why-is-libvips-quick)
|
@@ -14,32 +17,30 @@ memory](https://github.com/libvips/libvips/wiki/Speed-and-memory-use).
|
|
14
17
|
libvips is licensed under the [LGPL
|
15
18
|
2.1+](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html).
|
16
19
|
|
17
|
-
##
|
20
|
+
## Install on linux and macOS
|
18
21
|
|
19
|
-
|
22
|
+
Install the libvips binary with your package manager (eg. `apt install
|
23
|
+
libvips42` or perhaps `brew install vips`, see the [libvips install
|
24
|
+
instructions](https://libvips.github.io/libvips/install.html)) then install
|
25
|
+
this gem with:
|
20
26
|
|
21
|
-
|
22
|
-
|
23
|
-
|
27
|
+
```
|
28
|
+
gem install ruby-vips
|
29
|
+
```
|
24
30
|
|
25
|
-
|
31
|
+
Or include `gem "ruby-vips"` in your gemfile.
|
26
32
|
|
27
|
-
## Install
|
33
|
+
## Install on Windows
|
28
34
|
|
29
|
-
|
35
|
+
The gemspec will pull in the msys libvips for you, so all you need is:
|
30
36
|
|
31
37
|
```
|
32
|
-
|
38
|
+
gem install ruby-vips
|
33
39
|
```
|
34
40
|
|
35
|
-
|
41
|
+
Or include `gem "ruby-vips"` in your gemfile.
|
36
42
|
|
37
|
-
|
38
|
-
gem "ruby-vips"
|
39
|
-
```
|
40
|
-
|
41
|
-
On Windows, you'll need to set the `RUBY_DLL_PATH` environment variable to
|
42
|
-
point to the libvips bin directory.
|
43
|
+
Tested with the ruby and msys from choco, but others may work.
|
43
44
|
|
44
45
|
## Example
|
45
46
|
|
@@ -106,4 +107,3 @@ rmagick.rb 788768
|
|
106
107
|
|
107
108
|
See also [benchmarks at the official libvips
|
108
109
|
website](https://github.com/libvips/libvips/wiki/Speed-and-memory-use).
|
109
|
-
|
data/TODO
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.1
|
1
|
+
2.2.1
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
# demo the "revalidate" feature in libvips 8.15
|
4
|
+
|
5
|
+
require "fileutils"
|
6
|
+
require "vips"
|
7
|
+
|
8
|
+
if ARGV.length != 2
|
9
|
+
puts "usage: ./revalidate.rb IMAGE-FILE-1 IMAGE-FILE-2"
|
10
|
+
exit 1
|
11
|
+
end
|
12
|
+
|
13
|
+
if File.exist?("fred")
|
14
|
+
puts "file 'fred' exists, delete it first"
|
15
|
+
exit 1
|
16
|
+
end
|
17
|
+
|
18
|
+
puts "copying #{ARGV[0]} to fred ..."
|
19
|
+
FileUtils.cp(ARGV[0], "fred")
|
20
|
+
|
21
|
+
image1 = Vips::Image.new_from_file("fred")
|
22
|
+
puts "fred.width = #{image1.width}"
|
23
|
+
|
24
|
+
puts "copying #{ARGV[1]} to fred ..."
|
25
|
+
FileUtils.cp(ARGV[1], "fred")
|
26
|
+
|
27
|
+
puts "plain image open ..."
|
28
|
+
image2 = Vips::Image.new_from_file("fred")
|
29
|
+
puts "fred.width = #{image2.width}"
|
30
|
+
|
31
|
+
puts "opening with revalidate ..."
|
32
|
+
image2 = Vips::Image.new_from_file("fred", revalidate: true)
|
33
|
+
puts "fred.width = #{image2.width}"
|
34
|
+
|
35
|
+
puts "opening again, should get cached entry ..."
|
36
|
+
image2 = Vips::Image.new_from_file("fred")
|
37
|
+
puts "fred.width = #{image2.width}"
|
38
|
+
|
39
|
+
File.delete("fred")
|
data/lib/vips/image.rb
CHANGED
@@ -138,14 +138,14 @@ module Vips
|
|
138
138
|
image = image.cast :float
|
139
139
|
end
|
140
140
|
|
141
|
-
new_format = image.format == :double ? :dpcomplex : :complex
|
141
|
+
new_format = (image.format == :double) ? :dpcomplex : :complex
|
142
142
|
image = image.copy format: new_format, bands: image.bands / 2
|
143
143
|
end
|
144
144
|
|
145
145
|
image = block.call(image)
|
146
146
|
|
147
147
|
unless Image.complex? original_format
|
148
|
-
new_format = image.format == :dpcomplex ? :double : :float
|
148
|
+
new_format = (image.format == :dpcomplex) ? :double : :float
|
149
149
|
image = image.copy format: new_format, bands: image.bands * 2
|
150
150
|
end
|
151
151
|
|
@@ -458,7 +458,14 @@ module Vips
|
|
458
458
|
loader = Vips.vips_foreign_find_load_source source
|
459
459
|
raise Vips::Error if loader.nil?
|
460
460
|
|
461
|
-
Vips::Operation.call loader, [source], opts, option_string
|
461
|
+
result = Vips::Operation.call loader, [source], opts, option_string
|
462
|
+
|
463
|
+
# keep a secret ref to the source object ... the libvips loader will
|
464
|
+
# keep a ref to the C source object, but we need the ruby wrapper object
|
465
|
+
# to stay alive too
|
466
|
+
result.references << source
|
467
|
+
|
468
|
+
result
|
462
469
|
end
|
463
470
|
|
464
471
|
def self.matrix_from_array width, height, array
|
data/lib/vips/interpolate.rb
CHANGED
@@ -49,10 +49,10 @@ module Vips
|
|
49
49
|
|
50
50
|
def initialize name
|
51
51
|
name = name.to_s if name.is_a? Symbol
|
52
|
-
|
53
|
-
raise Vips::Error if
|
52
|
+
pointer = Vips.vips_interpolate_new name
|
53
|
+
raise Vips::Error if pointer.nil?
|
54
54
|
|
55
|
-
super
|
55
|
+
super(pointer)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|