local-fastimage_resize 3.2.0 → 3.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 +5 -5
- data/.travis.yml +4 -3
- data/CHANGELOG.md +13 -0
- data/README.md +1 -0
- data/README.textile +3 -3
- data/Rakefile +1 -1
- data/ext/fastimage_native_resize/fastimage_native_resize.c +44 -10
- data/lib/fastimage/resize.rb +6 -4
- data/lib/fastimage/resize/version.rb +3 -1
- data/local-fastimage_resize.gemspec +4 -4
- metadata +19 -20
- data/README +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7a7a5852a9c12e9eb1da31bc031d8b39556025aa14a3df7cd21e63c23fe022c0
|
4
|
+
data.tar.gz: d5cb5920f6434683f56bb828cfb6b4dcd1742ae28e6184fe7b9e559cd2a61947
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6d60ea4c09f3901652548da85b723ea6b48959ec60a0633823e1b2a7a05a4318da716b36839d39bd2d9a7521eb3296e1eee459e9849df68c5359844d1c764d1d
|
7
|
+
data.tar.gz: 8f145aeae41f9e0cfb9aec8d56bc7b5a7b9beddec9d5d31496268434f247bd99dcd3a9c74c5e7a62b36d035dc3a78897faa232a90585fc886fa841d453a595fe
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
# 3.3.0 - 2018-04-24
|
2
|
+
|
3
|
+
Support for Exif orientation.
|
4
|
+
|
5
|
+
Images are rotated and flipped automatically based on Exif data, so that the
|
6
|
+
generated thumbnails follow the specified orientation.
|
7
|
+
|
8
|
+
Support for easy non-scaling operation
|
9
|
+
|
10
|
+
By providing `0` for both width and height, the image will not be scaled but
|
11
|
+
merely re-encoded to the target location. This may be useful in combination with
|
12
|
+
the above mentioned automatic Exif orientation handling,
|
13
|
+
|
1
14
|
# 3.2.0 - 2017-09-08
|
2
15
|
|
3
16
|
Check for some error cases in gd calls which might have resulted in null-pointer exceptions and subsequent segfaults.
|
data/README.md
CHANGED
data/README.textile
CHANGED
@@ -29,15 +29,15 @@ h2. Examples
|
|
29
29
|
<code>
|
30
30
|
require 'fastimage_resize'
|
31
31
|
|
32
|
-
FastImage.resize("example.gif", 100, 20, :
|
32
|
+
FastImage.resize("example.gif", 100, 20, outfile: "my.gif")
|
33
33
|
=> nil
|
34
34
|
|
35
35
|
outfile = FastImage.resize("nonexistentfile.png", 50, 50)
|
36
|
-
=>FastImage::ImageFetchFailure: FastImage::ImageFetchFailure
|
36
|
+
=> FastImage::ImageFetchFailure: FastImage::ImageFetchFailure
|
37
37
|
|
38
38
|
outfile = FastImage.resize("afile.png", 50, 150)
|
39
39
|
=> #<File:/var/folders/vm/vd65y2597xl_by6c73_m9j1h0000gn/T/FastImage20111003-7638-x3l8r7-0.png>
|
40
|
-
|
40
|
+
|
41
41
|
File.open("afile.png", "r") {|f| FastImage.resize(f, 100, 100)}
|
42
42
|
=> #<File:/var/folders/vm/vd65y2597xl_by6c73_m9j1h0000gn/T/FastImage20111003-7638-y1ofh-0.png>
|
43
43
|
</code>
|
data/Rakefile
CHANGED
@@ -1,19 +1,21 @@
|
|
1
1
|
#include <ruby.h>
|
2
2
|
#include <gd.h>
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
static VALUE fastimage_native_resize(
|
5
|
+
VALUE self,
|
6
|
+
VALUE rb_in, VALUE rb_out,
|
7
|
+
VALUE rb_w, VALUE rb_h,
|
8
|
+
VALUE rb_image_type,
|
9
|
+
VALUE rb_jpeg_quality,
|
10
|
+
VALUE rb_orientation
|
11
|
+
) {
|
11
12
|
char *filename_in = StringValuePtr(rb_in);
|
12
13
|
char *filename_out = StringValuePtr(rb_out);
|
13
14
|
int w = NUM2INT(rb_w);
|
14
15
|
int h = NUM2INT(rb_h);
|
15
16
|
int image_type = NUM2INT(rb_image_type);
|
16
17
|
int jpeg_quality = NUM2INT(rb_jpeg_quality);
|
18
|
+
int orientation = NUM2INT(rb_orientation);
|
17
19
|
|
18
20
|
|
19
21
|
gdImagePtr im_in, im_out;
|
@@ -53,16 +55,48 @@ static VALUE fastimage_native_resize(VALUE self, VALUE rb_in, VALUE rb_out, VALU
|
|
53
55
|
return Qnil;
|
54
56
|
}
|
55
57
|
|
58
|
+
|
59
|
+
|
60
|
+
/* Handle orientation */
|
61
|
+
if (orientation == 5 || orientation == 6) {
|
62
|
+
im_in = gdImageRotateInterpolated(im_in, 270.0, 0);
|
63
|
+
}
|
64
|
+
if (orientation == 7 || orientation == 8) {
|
65
|
+
im_in = gdImageRotateInterpolated(im_in, 90.0, 0);
|
66
|
+
}
|
67
|
+
if (!im_in) {
|
68
|
+
fclose(in);
|
69
|
+
return Qnil;
|
70
|
+
}
|
71
|
+
|
72
|
+
if (orientation == 2 || orientation == 5 || orientation == 7) {
|
73
|
+
gdImageFlipHorizontal(im_in);
|
74
|
+
}
|
75
|
+
if (orientation == 3) {
|
76
|
+
gdImageFlipBoth(im_in);
|
77
|
+
}
|
78
|
+
if (orientation == 4) {
|
79
|
+
gdImageFlipVertical(im_in);
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
/* Compute target size */
|
56
85
|
if (w == 0 || h == 0) {
|
57
86
|
int originalWidth = gdImageSX(im_in);
|
58
87
|
int originalHeight = gdImageSY(im_in);
|
59
|
-
if (
|
88
|
+
if (h != 0) {
|
60
89
|
w = (int)(h * originalWidth / originalHeight);
|
61
|
-
} else {
|
90
|
+
} else if (w != 0) {
|
62
91
|
h = (int)(w * originalHeight / originalWidth);
|
92
|
+
} else {
|
93
|
+
w = originalWidth;
|
94
|
+
h = originalHeight;
|
63
95
|
}
|
64
96
|
}
|
65
97
|
|
98
|
+
|
99
|
+
|
66
100
|
im_out = gdImageCreateTrueColor(w, h); /* must be truecolor */
|
67
101
|
if (im_out) {
|
68
102
|
if (image_type == 1) {
|
@@ -107,5 +141,5 @@ void Init_fastimage_native_resize(void) {
|
|
107
141
|
|
108
142
|
cFastImageResize = rb_const_get(rb_cObject, rb_intern("FastImage"));
|
109
143
|
|
110
|
-
rb_define_singleton_method(cFastImageResize, "native_resize", fastimage_native_resize,
|
144
|
+
rb_define_singleton_method(cFastImageResize, "native_resize", fastimage_native_resize, 7);
|
111
145
|
}
|
data/lib/fastimage/resize.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
1
3
|
# FastImage Resize is an extremely light solution for resizing images in ruby by using libgd
|
2
4
|
#
|
3
5
|
# === Examples
|
4
6
|
#
|
5
7
|
# require 'fastimage_resize'
|
6
8
|
#
|
7
|
-
# FastImage.resize("image.gif", 100, 20, :
|
9
|
+
# FastImage.resize("image.gif", 100, 20, outfile: "thumbnail.gif")
|
8
10
|
# => 1
|
9
11
|
#
|
10
12
|
# === Requirements
|
@@ -47,7 +49,7 @@ module FastImage::Resize
|
|
47
49
|
#
|
48
50
|
# require 'fastimage_resize'
|
49
51
|
#
|
50
|
-
# FastImage.resize("http://stephensykes.com/images/ss.com_x.gif", 100, 20, :
|
52
|
+
# FastImage.resize("http://stephensykes.com/images/ss.com_x.gif", 100, 20, outfile: "my.gif")
|
51
53
|
#
|
52
54
|
# === Supported options
|
53
55
|
# [:jpeg_quality]
|
@@ -56,7 +58,7 @@ module FastImage::Resize
|
|
56
58
|
# Name of a file to store the output in, in this case a temp file is not used
|
57
59
|
#
|
58
60
|
def resize(source, width, height, options={})
|
59
|
-
new(source, :
|
61
|
+
new(source, raise_on_failure: true).resize(width, height, options)
|
60
62
|
end
|
61
63
|
end
|
62
64
|
|
@@ -75,7 +77,7 @@ module FastImage::Resize
|
|
75
77
|
temp_file = nil
|
76
78
|
end
|
77
79
|
|
78
|
-
FastImage.native_resize(path, file_out.to_s, width.to_i, height.to_i, type_index, jpeg_quality.to_i)
|
80
|
+
FastImage.native_resize(path, file_out.to_s, width.to_i, height.to_i, type_index, jpeg_quality.to_i, orientation)
|
79
81
|
|
80
82
|
raise FastImage::ImageFetchFailure, 'Image could be created' unless File.exist?(file_out.to_s)
|
81
83
|
|
@@ -24,8 +24,8 @@ Gem::Specification.new do |s|
|
|
24
24
|
|
25
25
|
s.add_dependency "local-fastimage", "~> 3.0"
|
26
26
|
|
27
|
-
s.add_development_dependency "bundler"
|
28
|
-
s.add_development_dependency "rake"
|
29
|
-
s.add_development_dependency "minitest"
|
30
|
-
s.add_development_dependency "rake-compiler"
|
27
|
+
s.add_development_dependency "bundler"
|
28
|
+
s.add_development_dependency "rake"
|
29
|
+
s.add_development_dependency "minitest"
|
30
|
+
s.add_development_dependency "rake-compiler"
|
31
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: local-fastimage_resize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Sykes
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-04-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: local-fastimage
|
@@ -29,58 +29,58 @@ dependencies:
|
|
29
29
|
name: bundler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rake
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
48
|
+
version: '0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: minitest
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - "
|
60
|
+
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
62
|
+
version: '0'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '0'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: rake-compiler
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0
|
76
|
+
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 0
|
83
|
+
version: '0'
|
84
84
|
description: Local FastImage Resize is an extremely light solution for resizing images
|
85
85
|
in ruby by using libgd.
|
86
86
|
email:
|
@@ -97,7 +97,6 @@ files:
|
|
97
97
|
- CHANGELOG.md
|
98
98
|
- Gemfile
|
99
99
|
- MIT_LICENCE
|
100
|
-
- README
|
101
100
|
- README.md
|
102
101
|
- README.textile
|
103
102
|
- Rakefile
|
@@ -128,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
127
|
requirements:
|
129
128
|
- libgd, see www.libgd.org
|
130
129
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.6
|
130
|
+
rubygems_version: 2.7.6
|
132
131
|
signing_key:
|
133
132
|
specification_version: 4
|
134
133
|
summary: Local FastImage Resize - Image resizing fast and simple
|
data/README
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
FastImage Resize is an extremely light solution for resizing images in ruby by using libgd
|
2
|
-
|
3
|
-
=== Examples
|
4
|
-
|
5
|
-
require 'fastimage_resize'
|
6
|
-
|
7
|
-
FastImage.resize("http://stephensykes.com/images/ss.com_x.gif", "my.gif", 100, 20)
|
8
|
-
=> 1
|
9
|
-
|
10
|
-
=== Requirements
|
11
|
-
|
12
|
-
RubyInline
|
13
|
-
|
14
|
-
gem install RubyInline
|
15
|
-
|
16
|
-
FastImage
|
17
|
-
|
18
|
-
gem install fastimage
|
19
|
-
|
20
|
-
Libgd
|
21
|
-
|
22
|
-
See http://www.libgd.org/
|
23
|
-
Libgd is commonly available on most unix platforms, including OSX.
|
24
|
-
|
25
|
-
=== References
|
26
|
-
|
27
|
-
* http://blog.new-bamboo.co.uk/2007/12/3/super-f-simple-resizing
|