ruby-vips 2.0.13 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +42 -0
- data/.github/workflows/test.yml +80 -0
- data/.standard.yml +17 -0
- data/.yardopts +0 -1
- data/CHANGELOG.md +44 -0
- data/Gemfile +3 -1
- data/README.md +45 -47
- data/Rakefile +13 -15
- data/TODO +19 -10
- data/VERSION +1 -1
- data/example/annotate.rb +7 -7
- data/example/connection.rb +26 -0
- data/example/daltonize8.rb +27 -29
- data/example/draw_lines.rb +30 -0
- data/example/example1.rb +5 -6
- data/example/example2.rb +11 -11
- data/example/example3.rb +9 -9
- data/example/example4.rb +8 -8
- data/example/example5.rb +8 -9
- data/example/inheritance_with_refcount.rb +203 -221
- data/example/progress.rb +30 -0
- data/example/thumb.rb +12 -14
- data/example/trim8.rb +7 -7
- data/example/watermark.rb +15 -36
- data/example/wobble.rb +25 -25
- data/lib/ruby-vips.rb +1 -1
- data/lib/vips.rb +473 -338
- data/lib/vips/access.rb +9 -9
- data/lib/vips/align.rb +7 -8
- data/lib/vips/angle.rb +8 -9
- data/lib/vips/angle45.rb +12 -13
- data/lib/vips/bandformat.rb +16 -18
- data/lib/vips/blend_mode.rb +36 -0
- data/lib/vips/coding.rb +11 -12
- data/lib/vips/compass_direction.rb +13 -14
- data/lib/vips/connection.rb +46 -0
- data/lib/vips/direction.rb +7 -8
- data/lib/vips/extend.rb +13 -14
- data/lib/vips/gobject.rb +111 -100
- data/lib/vips/gvalue.rb +243 -237
- data/lib/vips/image.rb +1501 -1338
- data/lib/vips/interesting.rb +10 -11
- data/lib/vips/interpolate.rb +50 -54
- data/lib/vips/interpretation.rb +25 -26
- data/lib/vips/kernel.rb +18 -19
- data/lib/vips/methods.rb +929 -309
- data/lib/vips/mutableimage.rb +154 -0
- data/lib/vips/object.rb +318 -208
- data/lib/vips/operation.rb +467 -320
- data/lib/vips/operationboolean.rb +10 -11
- data/lib/vips/operationcomplex.rb +8 -9
- data/lib/vips/operationcomplex2.rb +6 -7
- data/lib/vips/operationcomplexget.rb +7 -8
- data/lib/vips/operationmath.rb +14 -15
- data/lib/vips/operationmath2.rb +6 -7
- data/lib/vips/operationrelational.rb +11 -12
- data/lib/vips/operationround.rb +7 -8
- data/lib/vips/region.rb +73 -0
- data/lib/vips/size.rb +9 -10
- data/lib/vips/source.rb +88 -0
- data/lib/vips/sourcecustom.rb +89 -0
- data/lib/vips/target.rb +86 -0
- data/lib/vips/targetcustom.rb +77 -0
- data/lib/vips/version.rb +1 -2
- data/ruby-vips.gemspec +29 -20
- metadata +51 -40
- data/.travis.yml +0 -55
- data/install-vips.sh +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b632e0e44fa32da791e46806757e9b6a1a9901d92e2de9b02e16682bc3f3e6b2
|
4
|
+
data.tar.gz: 5d3841b9a656d13003b1b2668c05ab89cf5b65c76a52dad070a67b9a6856fe60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11c11a729818aa279cf5a157cda6e810174da9089b9ae3a0e92b3c7e6080362dfca5a970b07f3881aa7f31e5aa4acf3cd1a9a05a2e3ef09dc86d7464fe8987fe
|
7
|
+
data.tar.gz: 41bae93d0c491699e0042acfe687bc86766af576c9ffe57da1c20a26de548e08c73c0d7685855a155630ed5d47a3a2e2e60f982df48df2a59d4a9f4bd6ccfd34
|
@@ -0,0 +1,42 @@
|
|
1
|
+
---
|
2
|
+
name: Bug report
|
3
|
+
about: Create a report to help us improve
|
4
|
+
title: ''
|
5
|
+
labels: bug
|
6
|
+
assignees: ''
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
**Questions or suggestions**
|
11
|
+
|
12
|
+
We are using [Discussions](https://github.com/libvips/ruby-vips/discussions) for questions and suggestions for new features. Issues are only for bug reports.
|
13
|
+
|
14
|
+
**Describe the bug**
|
15
|
+
A clear and concise description of what the bug is.
|
16
|
+
|
17
|
+
**To Reproduce**
|
18
|
+
Steps to reproduce the behavior:
|
19
|
+
1. Go to '...'
|
20
|
+
2. Click on '....'
|
21
|
+
3. Scroll down to '....'
|
22
|
+
4. See error
|
23
|
+
|
24
|
+
**Expected behavior**
|
25
|
+
A clear and concise description of what you expected to happen.
|
26
|
+
|
27
|
+
**Screenshots**
|
28
|
+
If applicable, add screenshots to help explain your problem.
|
29
|
+
|
30
|
+
**Desktop (please complete the following information):**
|
31
|
+
- OS: [e.g. iOS]
|
32
|
+
- Browser [e.g. chrome, safari]
|
33
|
+
- Version [e.g. 22]
|
34
|
+
|
35
|
+
**Smartphone (please complete the following information):**
|
36
|
+
- Device: [e.g. iPhone6]
|
37
|
+
- OS: [e.g. iOS8.1]
|
38
|
+
- Browser [e.g. stock browser, safari]
|
39
|
+
- Version [e.g. 22]
|
40
|
+
|
41
|
+
**Additional context**
|
42
|
+
Add any other context about the problem here.
|
@@ -0,0 +1,80 @@
|
|
1
|
+
name: Test
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
pull_request:
|
8
|
+
pull_request_target:
|
9
|
+
branches:
|
10
|
+
- master
|
11
|
+
|
12
|
+
env:
|
13
|
+
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
|
14
|
+
SPEC_OPTS: '--backtrace'
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
lint:
|
18
|
+
name: Lint
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
|
21
|
+
steps:
|
22
|
+
- name: Checkout code
|
23
|
+
uses: actions/checkout@v2
|
24
|
+
|
25
|
+
- name: Set up Ruby
|
26
|
+
uses: ruby/setup-ruby@v1
|
27
|
+
with:
|
28
|
+
ruby-version: '2.7'
|
29
|
+
bundler-cache: true
|
30
|
+
|
31
|
+
- name: Run standard Ruby linter
|
32
|
+
run: bundle exec standardrb --no-fix --fail-fast
|
33
|
+
|
34
|
+
test:
|
35
|
+
name: Functional testing
|
36
|
+
|
37
|
+
strategy:
|
38
|
+
matrix:
|
39
|
+
os-version: [ 'ubuntu-20.04' ]
|
40
|
+
ruby-version:
|
41
|
+
- 2.0
|
42
|
+
- 2.1
|
43
|
+
- 2.2
|
44
|
+
- 2.3
|
45
|
+
- 2.4
|
46
|
+
- 2.5
|
47
|
+
- 2.6
|
48
|
+
- 2.7
|
49
|
+
- 3.0
|
50
|
+
- jruby
|
51
|
+
fail-fast: true
|
52
|
+
|
53
|
+
runs-on: ${{ matrix.os-version }}
|
54
|
+
|
55
|
+
steps:
|
56
|
+
- name: Checkout code
|
57
|
+
uses: actions/checkout@v2
|
58
|
+
|
59
|
+
- name: Set up Ruby
|
60
|
+
uses: ruby/setup-ruby@v1
|
61
|
+
with:
|
62
|
+
ruby-version: ${{ matrix.ruby-version }}
|
63
|
+
bundler-cache: true
|
64
|
+
|
65
|
+
- name: Update apt
|
66
|
+
env:
|
67
|
+
DEBIAN_FRONTEND: noninteractive
|
68
|
+
run:
|
69
|
+
sudo apt-get update -qq -o Acquire::Retries=3
|
70
|
+
|
71
|
+
- name: Install libvips
|
72
|
+
env:
|
73
|
+
DEBIAN_FRONTEND: noninteractive
|
74
|
+
run:
|
75
|
+
# we only need the library
|
76
|
+
sudo apt-get install --fix-missing -qq -o Acquire::Retries=3
|
77
|
+
libvips
|
78
|
+
|
79
|
+
- name: Run Tests
|
80
|
+
run: bundle exec rake spec
|
data/.standard.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
fix: false # default: false
|
2
|
+
parallel: true # default: false
|
3
|
+
format: progress # default: Standard::Formatter
|
4
|
+
ruby_version: 2.0 # default: RUBY_VERSION
|
5
|
+
default_ignores: false # default: true
|
6
|
+
|
7
|
+
ignore: # default: []
|
8
|
+
- '**/*':
|
9
|
+
- Standard/SemanticBlocks
|
10
|
+
- 'lib/vips/methods.rb'
|
11
|
+
- '{lib,example}/**/*':
|
12
|
+
- Lint/IneffectiveAccessModifier
|
13
|
+
- Lint/RescueException
|
14
|
+
- Style/GlobalVars
|
15
|
+
- 'spec/**/*':
|
16
|
+
- Lint/BinaryOperatorWithIdenticalOperands
|
17
|
+
- 'vendor/**/*'
|
data/.yardopts
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,50 @@
|
|
2
2
|
|
3
3
|
## master
|
4
4
|
|
5
|
+
## Version 2.1.0 (2021-3-8)
|
6
|
+
|
7
|
+
* add "mutate" system [jcupitt]
|
8
|
+
* better behaviour with some nil parameters [jcupitt]
|
9
|
+
* revise gemspec [jcupitt]
|
10
|
+
* allow symbols for Interpolate.new [noraj]
|
11
|
+
* update docs for 8.10, fix minor doc formatting issues [jcupitt]
|
12
|
+
* `new_from_array` checks array argument more carefully [dkam]
|
13
|
+
* add `new_from_memory` and `new_from_memory_copy` [ankane]
|
14
|
+
* jruby added to CI testing [pftg]
|
15
|
+
* switch to github actions for CI [pftg]
|
16
|
+
* remove rubocop, revise formatting for standardrb [pftg]
|
17
|
+
|
18
|
+
## Version 2.0.17 (2019-10-29)
|
19
|
+
|
20
|
+
* install msys2 libvips on Windows [larskanis]
|
21
|
+
* better `-` to `_` conversion [Nakilon]
|
22
|
+
* fix `GValue#set` for stricter metadata rules in 8.9 [jcupitt]
|
23
|
+
* fix a ref leak on operation build error [jcupitt]
|
24
|
+
* faster operation call [jcupitt]
|
25
|
+
* add support for VipsConnection [jcupitt]
|
26
|
+
* add `signal_connect` [jcupitt]
|
27
|
+
* add `Image#set_kill` for progress termination [jcupitt]
|
28
|
+
|
29
|
+
## Version 2.0.16 (2019-9-21)
|
30
|
+
|
31
|
+
* better library name generation [renchap]
|
32
|
+
* allow `_` as a separator in enum names [D-W-L]
|
33
|
+
* add `Vips::Region` and `Region#fetch` [jcupitt]
|
34
|
+
|
35
|
+
## Version 2.0.15 (2019-6-12)
|
36
|
+
|
37
|
+
* better error messages from `write_to_memory` [linkyndy]
|
38
|
+
* fix doc generation typo for array return [jcupitt]
|
39
|
+
* update tests for libvips 8.8 [jcupitt]
|
40
|
+
|
41
|
+
## Version 2.0.14 (2018-10-3)
|
42
|
+
|
43
|
+
* update links for new home [jcupitt]
|
44
|
+
* various doc fixes [janko-m]
|
45
|
+
* add `Vips::get_suffixes` [jcupitt]
|
46
|
+
* prefer options splat [ioquatix]
|
47
|
+
* update docs for 8.8 [jcupitt]
|
48
|
+
|
5
49
|
## Version 2.0.13 (2018-8-6)
|
6
50
|
|
7
51
|
* allow optional args to have `nil` as a value [janko-m]
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,50 +1,27 @@
|
|
1
1
|
# ruby-vips
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/ruby-vips.svg)](https://badge.fury.io/rb/ruby-vips)
|
4
|
-
[![
|
4
|
+
[![Test](https://github.com/libvips/ruby-vips/workflows/Test/badge.svg)](https://github.com/libvips/ruby-vips/actions?query=workflow%3ATest)
|
5
5
|
|
6
|
-
This gem
|
7
|
-
library](https://
|
6
|
+
This gem is a Ruby binding for the [libvips image processing
|
7
|
+
library](https://libvips.github.io/libvips).
|
8
8
|
|
9
|
-
Programs that use `ruby-vips` don't
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
Because `ruby-vips` is parallel, it's quick, and because it doesn't need to
|
16
|
-
keep entire images in memory, it's light. For example, the benchmark at
|
17
|
-
[vips-benchmarks](https://github.com/jcupitt/vips-benchmarks) loads a
|
18
|
-
large image, crops, shrinks, sharpens and saves again, and repeats 10 times.
|
19
|
-
|
20
|
-
```text
|
21
|
-
real time in seconds, fastest of five runs
|
22
|
-
benchmark tiff jpeg
|
23
|
-
ruby-vips.rb 0.85 0.78
|
24
|
-
image-magick 2.03 2.44
|
25
|
-
rmagick.rb 3.87 3.89
|
26
|
-
|
27
|
-
peak memory use in kb
|
28
|
-
benchmark peak RES
|
29
|
-
ruby-vips.rb 43864
|
30
|
-
rmagick.rb 788768
|
31
|
-
```
|
32
|
-
|
33
|
-
See also [benchmarks at the official libvips
|
34
|
-
website](https://github.com/jcupitt/libvips/wiki/Speed-and-memory-use).
|
35
|
-
There's a handy blog post explaining [how libvips opens
|
36
|
-
files](http://libvips.blogspot.co.uk/2012/06/how-libvips-opens-file.html)
|
37
|
-
which gives some more background.
|
9
|
+
Programs that use `ruby-vips` don't manipulate images directly, instead
|
10
|
+
they create pipelines of image processing operations building on a source
|
11
|
+
image. When the end of the pipe is connected to a destination, the whole
|
12
|
+
pipeline executes at once, streaming the image in parallel from source to
|
13
|
+
destination a section at a time. Because `ruby-vips` is parallel, it's quick,
|
14
|
+
and because it doesn't need to keep entire images in memory, it's light.
|
38
15
|
|
39
16
|
## Requirements
|
40
17
|
|
41
18
|
* macOS, Linux, and Windows tested
|
42
19
|
|
43
|
-
* libvips 8.2 or later, see the [libvips install instructions](https://
|
20
|
+
* libvips 8.2 or later, see the [libvips install instructions](https://libvips.github.io/libvips/install.html)
|
44
21
|
|
45
22
|
* [ruby-ffi](https://github.com/ffi/ffi) 1.9 or later
|
46
23
|
|
47
|
-
* Ruby 2.0+, JRuby
|
24
|
+
* Ruby 2.0+, JRuby
|
48
25
|
|
49
26
|
## Install
|
50
27
|
|
@@ -57,26 +34,23 @@ $ gem install ruby-vips
|
|
57
34
|
or include it in `Gemfile`:
|
58
35
|
|
59
36
|
```ruby
|
60
|
-
gem
|
37
|
+
gem "ruby-vips"
|
61
38
|
```
|
62
39
|
|
63
40
|
On Windows, you'll need to set the `RUBY_DLL_PATH` environment variable to
|
64
41
|
point to the libvips bin directory.
|
65
42
|
|
66
|
-
Take a look in `examples/`. There is [full API
|
67
|
-
documentation](http://www.rubydoc.info/gems/ruby-vips).
|
68
|
-
|
69
43
|
# Example
|
70
44
|
|
71
45
|
```ruby
|
72
|
-
require
|
46
|
+
require "vips"
|
73
47
|
|
74
48
|
im = Vips::Image.new_from_file filename
|
75
49
|
|
76
50
|
# put im at position (100, 100) in a 3000 x 3000 pixel image,
|
77
51
|
# make the other pixels in the image by mirroring im up / down /
|
78
52
|
# left / right, see
|
79
|
-
# https://
|
53
|
+
# https://libvips.github.io/libvips/API/current/libvips-conversion.html#vips-embed
|
80
54
|
im = im.embed 100, 100, 3000, 3000, extend: :mirror
|
81
55
|
|
82
56
|
# multiply the green (middle) band by 2, leave the other two alone
|
@@ -93,13 +67,37 @@ im = im.conv mask, precision: :integer
|
|
93
67
|
im.write_to_file output_filename
|
94
68
|
```
|
95
69
|
|
96
|
-
|
70
|
+
The `Vips` section in the API docs has a [tutorial introduction with
|
71
|
+
examples](https://www.rubydoc.info/gems/ruby-vips/Vips).
|
97
72
|
|
98
|
-
|
73
|
+
ruby-vips has [API
|
74
|
+
documentation](http://www.rubydoc.info/gems/ruby-vips). The [libvips
|
75
|
+
reference manual](https://libvips.github.io/libvips/API/current/) has a
|
76
|
+
complete explanation of every method.
|
99
77
|
|
100
|
-
The
|
101
|
-
|
78
|
+
The
|
79
|
+
[`example/`](https://github.com/libvips/ruby-vips/tree/master/example)
|
80
|
+
directory has some simple example programs.
|
81
|
+
|
82
|
+
# Benchmarks
|
83
|
+
|
84
|
+
The benchmark at [vips-benchmarks](https://github.com/jcupitt/vips-benchmarks)
|
85
|
+
loads a large image, crops, shrinks, sharpens and saves again, and repeats
|
86
|
+
10 times.
|
87
|
+
|
88
|
+
```text
|
89
|
+
real time in seconds, fastest of five runs
|
90
|
+
benchmark tiff jpeg
|
91
|
+
ruby-vips.rb 0.85 0.78
|
92
|
+
image-magick 2.03 2.44
|
93
|
+
rmagick.rb 3.87 3.89
|
94
|
+
|
95
|
+
peak memory use in kb
|
96
|
+
benchmark peak RES
|
97
|
+
ruby-vips.rb 43864
|
98
|
+
rmagick.rb 788768
|
99
|
+
```
|
100
|
+
|
101
|
+
See also [benchmarks at the official libvips
|
102
|
+
website](https://github.com/libvips/libvips/wiki/Speed-and-memory-use).
|
102
103
|
|
103
|
-
The `1.0-stable` branch is based on `gobject-introspection` rather than
|
104
|
-
`ffi`. It supports the same API as the current version, but is harder to
|
105
|
-
install, less portable, slower, and less stable.
|
data/Rakefile
CHANGED
@@ -1,29 +1,27 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'bundler/gem_tasks'
|
1
|
+
require "bundler/gem_tasks"
|
4
2
|
|
5
3
|
begin
|
6
4
|
Bundler.setup(:default, :development)
|
7
5
|
rescue Bundler::BundlerError => e
|
8
|
-
|
9
|
-
|
6
|
+
warn e.message
|
7
|
+
warn "Run `bundle install` to install missing gems"
|
10
8
|
exit e.status_code
|
11
9
|
end
|
12
10
|
|
13
|
-
require
|
11
|
+
require "rake"
|
14
12
|
|
15
|
-
require
|
16
|
-
require
|
13
|
+
require "rspec/core"
|
14
|
+
require "rspec/core/rake_task"
|
17
15
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
18
|
-
spec.pattern = FileList[
|
16
|
+
spec.pattern = FileList["spec/**/*_spec.rb"]
|
19
17
|
end
|
20
18
|
|
21
|
-
task :
|
19
|
+
task default: :spec
|
22
20
|
|
23
|
-
|
24
|
-
require "
|
25
|
-
require "yard"
|
26
|
-
require "yard/rake/yardoc_task"
|
21
|
+
unless RUBY_PLATFORM.include?("java")
|
22
|
+
require "github/markup"
|
23
|
+
require "yard"
|
24
|
+
require "yard/rake/yardoc_task"
|
27
25
|
|
28
|
-
YARD::Rake::YardocTask.new
|
26
|
+
YARD::Rake::YardocTask.new
|
29
27
|
end
|
data/TODO
CHANGED
@@ -1,36 +1,45 @@
|
|
1
1
|
# Notes
|
2
2
|
|
3
|
-
- support complex constants, eg
|
3
|
+
- We should support complex constants, eg:
|
4
4
|
|
5
5
|
Complex(1, 2)
|
6
6
|
=> (1+2i)
|
7
7
|
|
8
8
|
# Common operations
|
9
9
|
|
10
|
-
-
|
10
|
+
- Lint.
|
11
11
|
|
12
|
-
|
13
|
-
edit VERSION
|
12
|
+
bundle exec standardrb
|
14
13
|
|
15
|
-
-
|
14
|
+
- Reinstall local copy of gem after a change.
|
16
15
|
|
17
16
|
bundle exec rake install
|
18
17
|
|
19
|
-
-
|
18
|
+
- Run test suite.
|
20
19
|
|
21
20
|
bundle exec rake
|
22
21
|
|
23
|
-
-
|
22
|
+
- Version bump.
|
23
|
+
|
24
|
+
edit lib/vips/version.rb
|
25
|
+
edit VERSION
|
26
|
+
|
27
|
+
- Regenerate autodocs.
|
24
28
|
|
25
29
|
cd lib/vips
|
26
30
|
ruby > methods.rb
|
27
|
-
require
|
31
|
+
require "vips"; Vips::Yard.generate
|
28
32
|
^D
|
29
33
|
|
30
|
-
-
|
34
|
+
- Regenerate docs.
|
31
35
|
|
32
36
|
bundle exec rake yard
|
33
37
|
|
34
|
-
-
|
38
|
+
- Push new gem to rubygems, tag repository with version.
|
35
39
|
|
40
|
+
gem2.5 signin --otp 111111 / enter username and passwd
|
36
41
|
bundle exec rake release
|
42
|
+
|
43
|
+
There's an invisible prompt for the authenticator code. Enter eg. 123456,
|
44
|
+
press return and the upload should work.
|
45
|
+
|