ruby-vips 1.0.4 → 1.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 +4 -4
- data/.travis.yml +19 -13
- data/CHANGELOG.md +10 -0
- data/README.md +4 -4
- data/install-vips.sh +26 -0
- data/lib/vips.rb +3 -1
- data/lib/vips/argument.rb +1 -5
- data/lib/vips/call.rb +7 -3
- data/lib/vips/image.rb +78 -36
- data/lib/vips/interesting.rb +14 -0
- data/lib/vips/methods.rb +25 -19
- data/lib/vips/size.rb +12 -0
- data/lib/vips/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa7ceeea5a7f3ba540d67ff5940b75229c55195b
|
4
|
+
data.tar.gz: 15ab5c034633a329a591b7db148ab5f2de294442
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a5f515a544a0a09cd68b4faafe23b5e10d06207855826e5a1a09cf0791a1ebf28ba5f2282a1bdc2301aaa21bab39e160c7a11bb76fbbf36370d7551b0b47f45
|
7
|
+
data.tar.gz: d483450c4931f687a7b219890f0ce49ada8f4a56334718b0c123a60a8cafc27aa3c45d5085cb4c2dd394e3bec037b10ac54e3fc595ea8250ca5188bd2a8030a5
|
data/.travis.yml
CHANGED
@@ -1,9 +1,16 @@
|
|
1
|
+
sudo: false
|
2
|
+
|
1
3
|
env:
|
2
4
|
global:
|
3
5
|
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true
|
4
|
-
|
5
|
-
|
6
|
-
|
6
|
+
- VIPS_VERSION_MAJOR=8
|
7
|
+
- VIPS_VERSION_MINOR=5
|
8
|
+
- VIPS_VERSION_MICRO=3
|
9
|
+
- PATH=$HOME/vips/bin:$PATH
|
10
|
+
- LD_LIBRARY_PATH=$HOME/vips/lib:$LD_LIBRARY_PATH
|
11
|
+
- PKG_CONFIG_PATH=$HOME/vips/lib/pkgconfig:$PKG_CONFIG_PATH
|
12
|
+
- PYTHONPATH=$HOME/vips/lib/python2.7/site-packages:$PYTHONPATH
|
13
|
+
- GI_TYPELIB_PATH=$HOME/vips/lib/girepository-1.0:$GI_TYPELIB_PATH
|
7
14
|
|
8
15
|
dist: trusty
|
9
16
|
|
@@ -30,11 +37,19 @@ addons:
|
|
30
37
|
- libwebp-dev
|
31
38
|
- libglib2.0-dev
|
32
39
|
|
40
|
+
cache:
|
41
|
+
directories:
|
42
|
+
- $HOME/vips
|
43
|
+
|
44
|
+
# gobject-introspection 3.1 declares itself as 2.1 minimum, so we can't test
|
45
|
+
# 2.0 ... in fact it seems to work if you force it, but I don't think we can do
|
46
|
+
# that on travis
|
33
47
|
language: ruby
|
34
48
|
rvm:
|
35
49
|
- 2.1
|
36
50
|
- 2.2
|
37
51
|
- 2.3
|
52
|
+
- 2.4
|
38
53
|
|
39
54
|
script: "bundle exec rake"
|
40
55
|
|
@@ -43,13 +58,4 @@ gemfile:
|
|
43
58
|
|
44
59
|
before_install:
|
45
60
|
- uname -a
|
46
|
-
-
|
47
|
-
- wget http://www.vips.ecs.soton.ac.uk/supported/current/vips-$LIBVIPS.tar.gz
|
48
|
-
- tar xvf vips-$LIBVIPS.tar.gz
|
49
|
-
- cd vips-$LIBVIPS
|
50
|
-
- >
|
51
|
-
CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0
|
52
|
-
./configure --prefix=/usr
|
53
|
-
- make
|
54
|
-
- sudo make install
|
55
|
-
- sudo ldconfig
|
61
|
+
- bash install-vips.sh
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# master
|
2
2
|
|
3
|
+
# Version 1.0.5
|
4
|
+
|
5
|
+
* fix `_const` for libvips 8.5 [John Cupitt]
|
6
|
+
* add `scaleimage`, the scale operation renamed to avoid a clash with the
|
7
|
+
`scale` property [John Cupitt]
|
8
|
+
* add `.new_from_image`: make a new image from a constant [John Cupitt]
|
9
|
+
* `bandjoin` will use `bandjoin_const`, if it can [John Cupitt]
|
10
|
+
* update generated docs for libvips 8.5 [John Cupitt]
|
11
|
+
* added docs for new libvips 8.5 enums [John Cupitt]
|
12
|
+
|
3
13
|
# Version 1.0.4
|
4
14
|
|
5
15
|
* remove stray comma from some docs lines [John Cupitt]
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ The older `ruby-vips` is still here and still maintained in branch
|
|
9
9
|
`0.3-stable`.
|
10
10
|
|
11
11
|
This gem provides a Ruby binding for the [vips image processing
|
12
|
-
library](
|
12
|
+
library](https://jcupitt.github.io/libvips).
|
13
13
|
|
14
14
|
Programs that use `ruby-vips` don't
|
15
15
|
manipulate images directly, instead they create pipelines of image processing
|
@@ -39,7 +39,7 @@ rmagick.rb 3352020
|
|
39
39
|
```
|
40
40
|
|
41
41
|
See also [benchmarks at the official libvips
|
42
|
-
website](
|
42
|
+
website](https://github.com/jcupitt/libvips/wiki/Speed-and-memory-use).
|
43
43
|
There's a handy blog post explaining [how libvips opens
|
44
44
|
files](http://libvips.blogspot.co.uk/2012/06/how-libvips-opens-file.html)
|
45
45
|
which gives some more background.
|
@@ -73,7 +73,7 @@ Check your package manager and see if the libvips on your system is new enough.
|
|
73
73
|
|
74
74
|
If it's too old, you'll need to build libvips from source.
|
75
75
|
Download a tarball from the
|
76
|
-
[libvips website](
|
76
|
+
[libvips website](https://jcupitt.github.io/libvips), or build
|
77
77
|
from [the git repository](https://github.com/jcupitt/libvips) and see the
|
78
78
|
README.
|
79
79
|
|
@@ -102,7 +102,7 @@ im = Vips::Image.new_from_file filename
|
|
102
102
|
# put im at position (100, 100) in a 3000 x 3000 pixel image,
|
103
103
|
# make the other pixels in the image by mirroring im up / down /
|
104
104
|
# left / right, see
|
105
|
-
#
|
105
|
+
# https://jcupitt.github.io/libvips/API/current/libvips-conversion.html#vips-embed
|
106
106
|
im = im.embed 100, 100, 3000, 3000, :extend => :mirror
|
107
107
|
|
108
108
|
# multiply the green (middle) band by 2, leave the other two alone
|
data/install-vips.sh
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
vips_site=https://github.com/jcupitt/libvips/releases/download
|
4
|
+
version=$VIPS_VERSION_MAJOR.$VIPS_VERSION_MINOR.$VIPS_VERSION_MICRO
|
5
|
+
|
6
|
+
set -e
|
7
|
+
|
8
|
+
# do we already have the correct vips built? early exit if yes
|
9
|
+
# we could check the configure params as well I guess
|
10
|
+
if [ -d "$HOME/vips/bin" ]; then
|
11
|
+
installed_version=$($HOME/vips/bin/vips --version)
|
12
|
+
escaped_version="$VIPS_VERSION_MAJOR\.$VIPS_VERSION_MINOR\.$VIPS_VERSION_MICRO"
|
13
|
+
echo "Need vips-$version"
|
14
|
+
echo "Found $installed_version"
|
15
|
+
if [[ "$installed_version" =~ ^vips-$escaped_version ]]; then
|
16
|
+
echo "Using cached directory"
|
17
|
+
exit 0
|
18
|
+
fi
|
19
|
+
fi
|
20
|
+
|
21
|
+
rm -rf $HOME/vips
|
22
|
+
wget $vips_site/v$version/vips-$version.tar.gz
|
23
|
+
tar xf vips-$version.tar.gz
|
24
|
+
cd vips-$version
|
25
|
+
CXXFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0 ./configure --prefix=$HOME/vips $*
|
26
|
+
make && make install
|
data/lib/vips.rb
CHANGED
@@ -121,6 +121,8 @@ module Vips
|
|
121
121
|
|
122
122
|
# TODO get the vips error buffer
|
123
123
|
raise error unless succeeded
|
124
|
+
|
125
|
+
log "Vips::Loader.call_init_function: argv = #{argv}"
|
124
126
|
end
|
125
127
|
|
126
128
|
def define_value_modules
|
@@ -138,7 +140,7 @@ module Vips
|
|
138
140
|
end
|
139
141
|
|
140
142
|
at_exit {
|
141
|
-
|
143
|
+
Vips::shutdown if Vips.respond_to? :shutdown
|
142
144
|
}
|
143
145
|
|
144
146
|
# this makes vips keep a list of all active objects which we can print out
|
data/lib/vips/argument.rb
CHANGED
@@ -50,11 +50,7 @@ module Vips
|
|
50
50
|
|
51
51
|
# we have a 1D array ... use that as a pixel constant and expand
|
52
52
|
# to match match_image
|
53
|
-
|
54
|
-
pixel = pixel.copy :interpretation => match_image.interpretation,
|
55
|
-
:xres => match_image.xres, :yres => match_image.yres
|
56
|
-
pixel.embed(0, 0, match_image.width, match_image.height,
|
57
|
-
:extend => :copy)
|
53
|
+
match_image.new_from_image(value)
|
58
54
|
end
|
59
55
|
|
60
56
|
# @private
|
data/lib/vips/call.rb
CHANGED
@@ -11,14 +11,13 @@ module Vips
|
|
11
11
|
def initialize(name, supplied_values)
|
12
12
|
@name = name
|
13
13
|
@supplied_values = supplied_values
|
14
|
+
@optional_values = {}
|
14
15
|
@instance = nil
|
15
16
|
@option_string = nil
|
16
17
|
|
17
18
|
if @supplied_values.last.is_a? Hash
|
18
19
|
@optional_values = @supplied_values.last
|
19
|
-
@supplied_values.delete_at
|
20
|
-
else
|
21
|
-
@optional_values = {}
|
20
|
+
@supplied_values.delete_at(-1)
|
22
21
|
end
|
23
22
|
|
24
23
|
begin
|
@@ -119,8 +118,11 @@ module Vips
|
|
119
118
|
end
|
120
119
|
|
121
120
|
def set_required_input(match_image, required_input)
|
121
|
+
log "set_required_input: @instance = #{@instance}"
|
122
|
+
|
122
123
|
# do we have a non-nil instance? set the first image arg with this
|
123
124
|
if @instance != nil
|
125
|
+
log "BANANA"
|
124
126
|
log "setting first image arg with instance ..."
|
125
127
|
x = required_input.find do |arg|
|
126
128
|
gtype = GLib::Type["VipsImage"]
|
@@ -238,6 +240,8 @@ module Vips
|
|
238
240
|
end
|
239
241
|
|
240
242
|
def invoke
|
243
|
+
log "invoke starting ..."
|
244
|
+
log "invoke instance is #{@instance}"
|
241
245
|
set_string_args()
|
242
246
|
match_image = find_match_image()
|
243
247
|
required_input, optional_input = find_input()
|
data/lib/vips/image.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# This module provides a set of overrides for the [vips image processing
|
2
|
-
# library](
|
2
|
+
# library](https://jcupitt.github.io/libvips/)
|
3
3
|
# used via the [gobject-introspection
|
4
4
|
# gem](https://rubygems.org/gems/gobject-introspection).
|
5
5
|
#
|
@@ -45,7 +45,8 @@
|
|
45
45
|
# but is slower and needs more memory. See {Access}
|
46
46
|
# for full details
|
47
47
|
# on the various modes available. You can also load formatted images from
|
48
|
-
# memory buffers
|
48
|
+
# memory buffers, create images that wrap C-style memory arrays, or make images
|
49
|
+
# from constants.
|
49
50
|
#
|
50
51
|
# The next line:
|
51
52
|
#
|
@@ -98,7 +99,7 @@
|
|
98
99
|
# of overrides which try to make it nicer to use.
|
99
100
|
#
|
100
101
|
# The API you end up with is a Ruby-ish version of the [VIPS C
|
101
|
-
# API](
|
102
|
+
# API](https://jcupitt.github.io/libvips/API/current).
|
102
103
|
# Full documentation
|
103
104
|
# on the operations and what they do is there, you can use it directly. This
|
104
105
|
# document explains the extra features of the Ruby API and lists the available
|
@@ -233,7 +234,7 @@
|
|
233
234
|
# that that operation expects.
|
234
235
|
#
|
235
236
|
# Use the [C API
|
236
|
-
# docs](
|
237
|
+
# docs](https://jcupitt.github.io/libvips/API/current)
|
237
238
|
# for more detail.
|
238
239
|
#
|
239
240
|
# # Exceptions
|
@@ -322,7 +323,7 @@ module Vips
|
|
322
323
|
# handy for overloads ... want to be able to apply a function to an
|
323
324
|
# array or to a scalar
|
324
325
|
def self.smap(x, &block)
|
325
|
-
x.is_a?(Array) ? x.map {|
|
326
|
+
x.is_a?(Array) ? x.map {|y| smap(y, &block)} : block.(x)
|
326
327
|
end
|
327
328
|
|
328
329
|
# run a complex operation on a complex image, or an image with an even
|
@@ -384,6 +385,24 @@ module Vips
|
|
384
385
|
end
|
385
386
|
end
|
386
387
|
|
388
|
+
# libvips 8.4 and earlier had a bug which swapped the args to the _const
|
389
|
+
# enum operations
|
390
|
+
def swap_const_args
|
391
|
+
Vips::version(0) < 8 or
|
392
|
+
(Vips::version(0) == 8 and Vips::version(1) <= 4)
|
393
|
+
end
|
394
|
+
|
395
|
+
# handy for expanding enum operations
|
396
|
+
def call_enum(name, other, enum)
|
397
|
+
if other.is_a?(Vips::Image)
|
398
|
+
Vips::call_base name.to_s, self, "", [other, enum]
|
399
|
+
else
|
400
|
+
args = swap_const_args ? [other, enum] : [enum, other]
|
401
|
+
|
402
|
+
Vips::call_base name.to_s + "_const", self, "", args
|
403
|
+
end
|
404
|
+
end
|
405
|
+
|
387
406
|
public
|
388
407
|
|
389
408
|
# Invoke a vips operation with {call}, using self as the first
|
@@ -392,7 +411,7 @@ module Vips
|
|
392
411
|
# @param name [String] vips operation to call
|
393
412
|
# @return result of vips operation
|
394
413
|
def method_missing(name, *args)
|
395
|
-
Vips::call_base
|
414
|
+
Vips::call_base name.to_s, self, "", args
|
396
415
|
end
|
397
416
|
|
398
417
|
# Invoke a vips operation with {call}.
|
@@ -556,6 +575,23 @@ module Vips
|
|
556
575
|
return image
|
557
576
|
end
|
558
577
|
|
578
|
+
# A new image is created with the same width, height, format,
|
579
|
+
# interpretation, resolution and offset as self, but with every pixel
|
580
|
+
# set to the specified value.
|
581
|
+
#
|
582
|
+
# You can pass an array to make a many-band image, or a single value to
|
583
|
+
# make a one-band image.
|
584
|
+
#
|
585
|
+
# @param pixel [Real, Array<Real>] value to put in each pixel
|
586
|
+
# @return [Image] constant image
|
587
|
+
def new_from_image(value)
|
588
|
+
pixel = (Vips::Image.black(1, 1) + value).cast(format)
|
589
|
+
image = pixel.embed(0, 0, width, height, :extend => :copy)
|
590
|
+
image.copy :interpretation => interpretation,
|
591
|
+
:xres => xres, :yres => yres,
|
592
|
+
:xoffset => xoffset, :yoffset => yoffset
|
593
|
+
end
|
594
|
+
|
559
595
|
# Write this image to a file. Save options may be encoded in the
|
560
596
|
# filename or given as a hash. For example:
|
561
597
|
#
|
@@ -756,7 +792,8 @@ module Vips
|
|
756
792
|
# @param other [Image, Real, Array<Real>] Thing to add to self
|
757
793
|
# @return [Image] result of addition
|
758
794
|
def +(other)
|
759
|
-
other.is_a?(Vips::Image) ?
|
795
|
+
other.is_a?(Vips::Image) ?
|
796
|
+
add(other) : linear(1, other)
|
760
797
|
end
|
761
798
|
|
762
799
|
# Subtract an image, constant or array.
|
@@ -773,7 +810,8 @@ module Vips
|
|
773
810
|
# @param other [Image, Real, Array<Real>] Thing to multiply by self
|
774
811
|
# @return [Image] result of multiplication
|
775
812
|
def *(other)
|
776
|
-
other.is_a?(Vips::Image) ?
|
813
|
+
other.is_a?(Vips::Image) ?
|
814
|
+
multiply(other) : linear(other, 0)
|
777
815
|
end
|
778
816
|
|
779
817
|
# Divide an image, constant or array.
|
@@ -799,8 +837,7 @@ module Vips
|
|
799
837
|
# @param other [Image, Real, Array<Real>] self to the power of this
|
800
838
|
# @return [Image] result of power
|
801
839
|
def **(other)
|
802
|
-
|
803
|
-
math2(other, :pow) : math2_const(other, :pow)
|
840
|
+
call_enum("math2", other, :pow)
|
804
841
|
end
|
805
842
|
|
806
843
|
# Integer left shift with an image, constant or array.
|
@@ -808,8 +845,7 @@ module Vips
|
|
808
845
|
# @param other [Image, Real, Array<Real>] shift left by this much
|
809
846
|
# @return [Image] result of left shift
|
810
847
|
def <<(other)
|
811
|
-
|
812
|
-
boolean(other, :lshift) : boolean_const(other, :lshift)
|
848
|
+
call_enum("boolean", other, :lshift)
|
813
849
|
end
|
814
850
|
|
815
851
|
# Integer right shift with an image, constant or array.
|
@@ -817,8 +853,7 @@ module Vips
|
|
817
853
|
# @param other [Image, Real, Array<Real>] shift right by this much
|
818
854
|
# @return [Image] result of right shift
|
819
855
|
def >>(other)
|
820
|
-
|
821
|
-
boolean(other, :rshift) : boolean_const(other, :rshift)
|
856
|
+
call_enum("boolean", other, :rshift)
|
822
857
|
end
|
823
858
|
|
824
859
|
# Integer bitwise OR with an image, constant or array.
|
@@ -826,8 +861,7 @@ module Vips
|
|
826
861
|
# @param other [Image, Real, Array<Real>] bitwise OR with this
|
827
862
|
# @return [Image] result of bitwise OR
|
828
863
|
def |(other)
|
829
|
-
|
830
|
-
boolean(other, :or) : boolean_const(other, :or)
|
864
|
+
call_enum("boolean", other, :or)
|
831
865
|
end
|
832
866
|
|
833
867
|
# Integer bitwise AND with an image, constant or array.
|
@@ -835,8 +869,7 @@ module Vips
|
|
835
869
|
# @param other [Image, Real, Array<Real>] bitwise AND with this
|
836
870
|
# @return [Image] result of bitwise AND
|
837
871
|
def &(other)
|
838
|
-
|
839
|
-
boolean(other, :and) : boolean_const(other, :and)
|
872
|
+
call_enum("boolean", other, :and)
|
840
873
|
end
|
841
874
|
|
842
875
|
# Integer bitwise EOR with an image, constant or array.
|
@@ -844,8 +877,7 @@ module Vips
|
|
844
877
|
# @param other [Image, Real, Array<Real>] bitwise EOR with this
|
845
878
|
# @return [Image] result of bitwise EOR
|
846
879
|
def ^(other)
|
847
|
-
|
848
|
-
boolean(other, :eor) : boolean_const(other, :eor)
|
880
|
+
call_enum("boolean", other, :eor)
|
849
881
|
end
|
850
882
|
|
851
883
|
# Equivalent to image ^ -1
|
@@ -879,8 +911,7 @@ module Vips
|
|
879
911
|
# @param other [Image, Real, Array<Real>] relational less than with this
|
880
912
|
# @return [Image] result of less than
|
881
913
|
def <(other)
|
882
|
-
|
883
|
-
relational(other, :less) : relational_const(other, :less)
|
914
|
+
call_enum("relational", other, :less)
|
884
915
|
end
|
885
916
|
|
886
917
|
# Relational less than or equal to with an image, constant or array.
|
@@ -889,8 +920,7 @@ module Vips
|
|
889
920
|
# equal to with this
|
890
921
|
# @return [Image] result of less than or equal to
|
891
922
|
def <=(other)
|
892
|
-
|
893
|
-
relational(other, :lesseq) : relational_const(other, :lesseq)
|
923
|
+
call_enum("relational", other, :lesseq)
|
894
924
|
end
|
895
925
|
|
896
926
|
# Relational more than with an image, constant or array.
|
@@ -898,8 +928,7 @@ module Vips
|
|
898
928
|
# @param other [Image, Real, Array<Real>] relational more than with this
|
899
929
|
# @return [Image] result of more than
|
900
930
|
def >(other)
|
901
|
-
|
902
|
-
relational(other, :more) : relational_const(other, :more)
|
931
|
+
call_enum("relational", other, :more)
|
903
932
|
end
|
904
933
|
|
905
934
|
# Relational more than or equal to with an image, constant or array.
|
@@ -908,8 +937,7 @@ module Vips
|
|
908
937
|
# equal to with this
|
909
938
|
# @return [Image] result of more than or equal to
|
910
939
|
def >=(other)
|
911
|
-
|
912
|
-
relational(other, :moreeq) : relational_const(other, :moreeq)
|
940
|
+
call_enum("relational", other, :moreeq)
|
913
941
|
end
|
914
942
|
|
915
943
|
# Compare equality to nil, an image, constant or array.
|
@@ -917,12 +945,11 @@ module Vips
|
|
917
945
|
# @param other [nil, Image, Real, Array<Real>] test equality to this
|
918
946
|
# @return [Image] result of equality
|
919
947
|
def ==(other)
|
948
|
+
# for equality, we must allow tests against nil
|
920
949
|
if other == nil
|
921
950
|
false
|
922
|
-
elsif other.is_a?(Vips::Image)
|
923
|
-
relational(other, :equal)
|
924
951
|
else
|
925
|
-
|
952
|
+
call_enum("relational", other, :equal)
|
926
953
|
end
|
927
954
|
end
|
928
955
|
|
@@ -931,12 +958,11 @@ module Vips
|
|
931
958
|
# @param other [nil, Image, Real, Array<Real>] test inequality to this
|
932
959
|
# @return [Image] result of inequality
|
933
960
|
def !=(other)
|
961
|
+
# for equality, we must allow tests against nil
|
934
962
|
if other == nil
|
935
963
|
true
|
936
|
-
elsif other.is_a?(Vips::Image)
|
937
|
-
relational(other, :noteq)
|
938
964
|
else
|
939
|
-
|
965
|
+
call_enum("relational", other, :noteq)
|
940
966
|
end
|
941
967
|
end
|
942
968
|
|
@@ -1029,7 +1055,14 @@ module Vips
|
|
1029
1055
|
other = [other]
|
1030
1056
|
end
|
1031
1057
|
|
1032
|
-
|
1058
|
+
# if other is just Numeric, we can use bandjoin_const
|
1059
|
+
not_all_real = (other.map {|x| not x.is_a?(Numeric)}).include?(true)
|
1060
|
+
|
1061
|
+
if not_all_real
|
1062
|
+
Vips::Image.bandjoin([self] + other)
|
1063
|
+
else
|
1064
|
+
bandjoin_const(other)
|
1065
|
+
end
|
1033
1066
|
end
|
1034
1067
|
|
1035
1068
|
# Return the coordinates of the image maximum.
|
@@ -1279,6 +1312,15 @@ module Vips
|
|
1279
1312
|
Vips::call_base "ifthenelse", self, "", [th, el, opts]
|
1280
1313
|
end
|
1281
1314
|
|
1315
|
+
# Scale an image to uchar. This is the vips `scale` operation, but
|
1316
|
+
# renamed to avoid a clash with the `.scale` property.
|
1317
|
+
#
|
1318
|
+
# @param [Hash] opts Set of options
|
1319
|
+
# @return [Vips::Image] Output image
|
1320
|
+
def scaleimage(opts = {})
|
1321
|
+
Vips::Image.scale self, opts
|
1322
|
+
end
|
1323
|
+
|
1282
1324
|
end
|
1283
1325
|
|
1284
1326
|
# This method generates yard comments for all the dynamically bound
|
@@ -1294,7 +1336,7 @@ module Vips
|
|
1294
1336
|
|
1295
1337
|
def self.generate_yard
|
1296
1338
|
# these have hand-written methods, see above
|
1297
|
-
no_generate = ["bandjoin", "ifthenelse"]
|
1339
|
+
no_generate = ["scale", "bandjoin", "ifthenelse"]
|
1298
1340
|
|
1299
1341
|
generate_operation = lambda do |op|
|
1300
1342
|
flags = op.flags
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Vips
|
2
|
+
|
3
|
+
# Pick the algorithm vips uses to decide image "interestingness". This is
|
4
|
+
# used by {Image#smartcrop}, for example, to decide what parts of the image
|
5
|
+
# to keep.
|
6
|
+
#
|
7
|
+
# * `:none` do nothing
|
8
|
+
# * `:centre` just take the centre
|
9
|
+
# * `:entropy` use an entropy measure
|
10
|
+
# * `:attention` look for features likely to draw human attention
|
11
|
+
|
12
|
+
class Interesting
|
13
|
+
end
|
14
|
+
end
|
data/lib/vips/methods.rb
CHANGED
@@ -117,10 +117,10 @@ module Vips
|
|
117
117
|
# @param [Hash] opts Set of options
|
118
118
|
# @return [Vips::Image] Output image
|
119
119
|
|
120
|
-
# @!method relational_const(
|
120
|
+
# @!method relational_const(relational, c, opts = {})
|
121
121
|
# Relational operations against a constant.
|
122
|
-
# @param c [Array<Double>] Array of constants
|
123
122
|
# @param relational [Vips::OperationRelational] relational to perform
|
123
|
+
# @param c [Array<Double>] Array of constants
|
124
124
|
# @param [Hash] opts Set of options
|
125
125
|
# @return [Vips::Image] Output image
|
126
126
|
|
@@ -130,17 +130,17 @@ module Vips
|
|
130
130
|
# @param [Hash] opts Set of options
|
131
131
|
# @return [Vips::Image] Output image
|
132
132
|
|
133
|
-
# @!method boolean_const(
|
133
|
+
# @!method boolean_const(boolean, c, opts = {})
|
134
134
|
# Boolean operations against a constant.
|
135
|
-
# @param c [Array<Double>] Array of constants
|
136
135
|
# @param boolean [Vips::OperationBoolean] boolean to perform
|
136
|
+
# @param c [Array<Double>] Array of constants
|
137
137
|
# @param [Hash] opts Set of options
|
138
138
|
# @return [Vips::Image] Output image
|
139
139
|
|
140
|
-
# @!method math2_const(
|
140
|
+
# @!method math2_const(math2, c, opts = {})
|
141
141
|
# Binary math operations with a constant.
|
142
|
-
# @param c [Array<Double>] Array of constants
|
143
142
|
# @param math2 [Vips::OperationMath2] math to perform
|
143
|
+
# @param c [Array<Double>] Array of constants
|
144
144
|
# @param [Hash] opts Set of options
|
145
145
|
# @return [Vips::Image] Output image
|
146
146
|
|
@@ -292,9 +292,7 @@ module Vips
|
|
292
292
|
# @!method sequential(opts = {})
|
293
293
|
# Check sequential access.
|
294
294
|
# @param [Hash] opts Set of options
|
295
|
-
# @option opts [Boolean] :trace trace pixel requests
|
296
295
|
# @option opts [Integer] :tile_height Tile height in pixels
|
297
|
-
# @option opts [Vips::Access] :access Expected access pattern
|
298
296
|
# @return [Vips::Image] Output image
|
299
297
|
|
300
298
|
# @!method cache(opts = {})
|
@@ -313,7 +311,7 @@ module Vips
|
|
313
311
|
# @param height [Integer] Image height in pixels
|
314
312
|
# @param [Hash] opts Set of options
|
315
313
|
# @option opts [Vips::Extend] :extend How to generate the extra pixels
|
316
|
-
# @option opts [Array<Double>] :background
|
314
|
+
# @option opts [Array<Double>] :background Color for background pixels
|
317
315
|
# @return [Vips::Image] Output image
|
318
316
|
|
319
317
|
# @!method flip(direction, opts = {})
|
@@ -329,7 +327,7 @@ module Vips
|
|
329
327
|
# @param y [Integer] Top edge of sub in main
|
330
328
|
# @param [Hash] opts Set of options
|
331
329
|
# @option opts [Boolean] :expand Expand output to hold all of both inputs
|
332
|
-
# @option opts [Array<Double>] :background
|
330
|
+
# @option opts [Array<Double>] :background Color for new pixels
|
333
331
|
# @return [Vips::Image] Output image
|
334
332
|
|
335
333
|
# @!method join(in2, direction, opts = {})
|
@@ -337,10 +335,10 @@ module Vips
|
|
337
335
|
# @param in2 [Vips::Image] Second input image
|
338
336
|
# @param direction [Vips::Direction] Join left-right or up-down
|
339
337
|
# @param [Hash] opts Set of options
|
340
|
-
# @option opts [Vips::Align] :align Align on the low, centre or high coordinate edge
|
341
338
|
# @option opts [Boolean] :expand Expand output to hold all of both inputs
|
342
339
|
# @option opts [Integer] :shim Pixels between images
|
343
340
|
# @option opts [Array<Double>] :background Colour for new pixels
|
341
|
+
# @option opts [Vips::Align] :align Align on the low, centre or high coordinate edge
|
344
342
|
# @return [Vips::Image] Output image
|
345
343
|
|
346
344
|
# @!method self.arrayjoin(in, opts = {})
|
@@ -374,6 +372,14 @@ module Vips
|
|
374
372
|
# @param [Hash] opts Set of options
|
375
373
|
# @return [Vips::Image] Output image
|
376
374
|
|
375
|
+
# @!method smartcrop(width, height, opts = {})
|
376
|
+
# Extract an area from an image.
|
377
|
+
# @param width [Integer] Width of extract area
|
378
|
+
# @param height [Integer] Height of extract area
|
379
|
+
# @param [Hash] opts Set of options
|
380
|
+
# @option opts [Vips::Interesting] :interesting How to measure interestingness
|
381
|
+
# @return [Vips::Image] Output image
|
382
|
+
|
377
383
|
# @!method extract_band(band, opts = {})
|
378
384
|
# Extract band from an image.
|
379
385
|
# @param band [Integer] Band to extract
|
@@ -1406,7 +1412,7 @@ module Vips
|
|
1406
1412
|
# @option opts [Integer] :height Size to this height
|
1407
1413
|
# @option opts [Vips::Size] :size Only upsize, only downsize, or both
|
1408
1414
|
# @option opts [Boolean] :auto_rotate Use orientation tags to rotate image upright
|
1409
|
-
# @option opts [
|
1415
|
+
# @option opts [Vips::Interesting] :crop Reduce to fill target rectangle, then crop
|
1410
1416
|
# @option opts [Boolean] :linear Reduce in linear light
|
1411
1417
|
# @option opts [String] :import_profile Fallback import profile
|
1412
1418
|
# @option opts [String] :export_profile Fallback export profile
|
@@ -1420,7 +1426,7 @@ module Vips
|
|
1420
1426
|
# @option opts [Integer] :height Size to this height
|
1421
1427
|
# @option opts [Vips::Size] :size Only upsize, only downsize, or both
|
1422
1428
|
# @option opts [Boolean] :auto_rotate Use orientation tags to rotate image upright
|
1423
|
-
# @option opts [
|
1429
|
+
# @option opts [Vips::Interesting] :crop Reduce to fill target rectangle, then crop
|
1424
1430
|
# @option opts [Boolean] :linear Reduce in linear light
|
1425
1431
|
# @option opts [String] :import_profile Fallback import profile
|
1426
1432
|
# @option opts [String] :export_profile Fallback export profile
|
@@ -1527,7 +1533,7 @@ module Vips
|
|
1527
1533
|
# @!method Lab2XYZ(opts = {})
|
1528
1534
|
# Transform cielab to xyz.
|
1529
1535
|
# @param [Hash] opts Set of options
|
1530
|
-
# @option opts [Array<Double>] :temp
|
1536
|
+
# @option opts [Array<Double>] :temp Color temperature
|
1531
1537
|
# @return [Vips::Image] Output image
|
1532
1538
|
|
1533
1539
|
# @!method XYZ2Lab(opts = {})
|
@@ -1909,7 +1915,7 @@ module Vips
|
|
1909
1915
|
|
1910
1916
|
# @!method draw_rect(ink, left, top, width, height, opts = {})
|
1911
1917
|
# Paint a rectangle on an image.
|
1912
|
-
# @param ink [Array<Double>]
|
1918
|
+
# @param ink [Array<Double>] Color for pixels
|
1913
1919
|
# @param left [Integer] Rect to fill
|
1914
1920
|
# @param top [Integer] Rect to fill
|
1915
1921
|
# @param width [Integer] Rect to fill
|
@@ -1920,7 +1926,7 @@ module Vips
|
|
1920
1926
|
|
1921
1927
|
# @!method draw_mask(ink, mask, x, y, opts = {})
|
1922
1928
|
# Draw a mask on an image.
|
1923
|
-
# @param ink [Array<Double>]
|
1929
|
+
# @param ink [Array<Double>] Color for pixels
|
1924
1930
|
# @param mask [Vips::Image] Mask of pixels to draw
|
1925
1931
|
# @param x [Integer] Draw mask here
|
1926
1932
|
# @param y [Integer] Draw mask here
|
@@ -1929,7 +1935,7 @@ module Vips
|
|
1929
1935
|
|
1930
1936
|
# @!method draw_line(ink, x1, y1, x2, y2, opts = {})
|
1931
1937
|
# Draw a line on an image.
|
1932
|
-
# @param ink [Array<Double>]
|
1938
|
+
# @param ink [Array<Double>] Color for pixels
|
1933
1939
|
# @param x1 [Integer] Start of draw_line
|
1934
1940
|
# @param y1 [Integer] Start of draw_line
|
1935
1941
|
# @param x2 [Integer] End of draw_line
|
@@ -1939,7 +1945,7 @@ module Vips
|
|
1939
1945
|
|
1940
1946
|
# @!method draw_circle(ink, cx, cy, radius, opts = {})
|
1941
1947
|
# Draw a circle on an image.
|
1942
|
-
# @param ink [Array<Double>]
|
1948
|
+
# @param ink [Array<Double>] Color for pixels
|
1943
1949
|
# @param cx [Integer] Centre of draw_circle
|
1944
1950
|
# @param cy [Integer] Centre of draw_circle
|
1945
1951
|
# @param radius [Integer] Radius in pixels
|
@@ -1949,7 +1955,7 @@ module Vips
|
|
1949
1955
|
|
1950
1956
|
# @!method draw_flood(ink, x, y, opts = {})
|
1951
1957
|
# Flood-fill an area.
|
1952
|
-
# @param ink [Array<Double>]
|
1958
|
+
# @param ink [Array<Double>] Color for pixels
|
1953
1959
|
# @param x [Integer] DrawFlood start point
|
1954
1960
|
# @param y [Integer] DrawFlood start point
|
1955
1961
|
# @param [Hash] opts Set of options
|
data/lib/vips/size.rb
ADDED
data/lib/vips/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-vips
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Cupitt
|
@@ -138,6 +138,7 @@ files:
|
|
138
138
|
- example/trim8.rb
|
139
139
|
- example/watermark.rb
|
140
140
|
- example/wobble.rb
|
141
|
+
- install-vips.sh
|
141
142
|
- lib/vips.rb
|
142
143
|
- lib/vips/access.rb
|
143
144
|
- lib/vips/align.rb
|
@@ -153,11 +154,13 @@ files:
|
|
153
154
|
- lib/vips/extend.rb
|
154
155
|
- lib/vips/foreignflags.rb
|
155
156
|
- lib/vips/image.rb
|
157
|
+
- lib/vips/interesting.rb
|
156
158
|
- lib/vips/interpolate.rb
|
157
159
|
- lib/vips/interpretation.rb
|
158
160
|
- lib/vips/kernel.rb
|
159
161
|
- lib/vips/methods.rb
|
160
162
|
- lib/vips/operation.rb
|
163
|
+
- lib/vips/size.rb
|
161
164
|
- lib/vips/version.rb
|
162
165
|
- ruby-vips.gemspec
|
163
166
|
homepage: http://github.com/jcupitt/ruby-vips
|
@@ -180,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
180
183
|
version: '0'
|
181
184
|
requirements: []
|
182
185
|
rubyforge_project:
|
183
|
-
rubygems_version: 2.5.
|
186
|
+
rubygems_version: 2.5.2
|
184
187
|
signing_key:
|
185
188
|
specification_version: 4
|
186
189
|
summary: Ruby extension for the vips image processing library.
|