local-fastimage_resize 3.0.1 → 3.4.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 +4 -4
- data/.gitignore +3 -0
- data/.travis.yml +18 -0
- data/CHANGELOG.md +33 -1
- data/README.md +18 -0
- data/README.textile +3 -3
- data/Rakefile +8 -1
- data/ext/fastimage_native_resize/extconf.rb +5 -0
- data/ext/fastimage_native_resize/fastimage_native_resize.c +149 -0
- data/lib/fastimage/resize.rb +12 -99
- data/lib/fastimage/resize/version.rb +3 -1
- data/local-fastimage_resize.gemspec +7 -5
- metadata +34 -31
- data/README +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0c5bfc9f73ad0d6abacc15c319720f88b5b1c17
|
4
|
+
data.tar.gz: 909df1ea148b610d11c149a90638b1459bee7505
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8b726c8da9c6d2fdb0eb7b767f1e67f14c2b710d7ac9e6c1090a3f916ca92eb87a7df677f9e5b61e92730ae3fbc6ef62b2c569179cc36e5e51b08ed56825edd
|
7
|
+
data.tar.gz: e2015adb26c7add9b02831a058aea7479ec3f3de27988c8d86c205984ea0146557a61d29c73d48a877774c9c3f9731f8b683d8587d0ad923a4cc3de159f1617e
|
data/.gitignore
CHANGED
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,7 +1,39 @@
|
|
1
|
+
# 3.4.0 - 2021-02-10
|
2
|
+
|
3
|
+
Support for resizing TIFF images. Output of such an operation is always a PNG
|
4
|
+
image.
|
5
|
+
|
6
|
+
# 3.3.0 - 2018-04-24
|
7
|
+
|
8
|
+
Support for Exif orientation.
|
9
|
+
|
10
|
+
Images are rotated and flipped automatically based on Exif data, so that the
|
11
|
+
generated thumbnails follow the specified orientation.
|
12
|
+
|
13
|
+
Support for easy non-scaling operation
|
14
|
+
|
15
|
+
By providing `0` for both width and height, the image will not be scaled but
|
16
|
+
merely re-encoded to the target location. This may be useful in combination with
|
17
|
+
the above mentioned automatic Exif orientation handling,
|
18
|
+
|
19
|
+
# 3.2.0 - 2017-09-08
|
20
|
+
|
21
|
+
Check for some error cases in gd calls which might have resulted in null-pointer exceptions and subsequent segfaults.
|
22
|
+
|
23
|
+
If the resized image could not be created for any reason, we now raise a `FastImage::ImageFetchFailure` exception.
|
24
|
+
|
25
|
+
# 3.1.1 - 2016-06-03
|
26
|
+
|
27
|
+
Fix native code structure to work after gem install.
|
28
|
+
|
29
|
+
# 3.1.0 - 2016-06-03
|
30
|
+
|
31
|
+
Replacing RubyInline with native extension.
|
32
|
+
|
1
33
|
# 3.0.1 - 2016-06-02
|
2
34
|
|
3
35
|
Updating meta data in gemspec, no code changes.
|
4
36
|
|
5
37
|
# 3.0.0 - 2016-06-02
|
6
38
|
|
7
|
-
Removing remote image support
|
39
|
+
Removing remote image support.
|
data/README.md
CHANGED
@@ -6,8 +6,13 @@ Resize](https://github.com/sdsykes/fastimage_resize) gem.
|
|
6
6
|
It features the following differences:
|
7
7
|
|
8
8
|
* Removal of all remote image handling code
|
9
|
+
* Replacing RubyInline with native extension
|
10
|
+
* Support for Exif orientation
|
9
11
|
* Minor changes to code organization
|
10
12
|
|
13
|
+
[](https://travis-ci.org/planio-gmbh/local-fastimage_resize)
|
15
|
+
|
11
16
|
## Installation
|
12
17
|
|
13
18
|
Add this line to your application's Gemfile:
|
@@ -31,6 +36,19 @@ Or install it yourself as:
|
|
31
36
|
Again, make sure to `require "fastimage/resize"`.
|
32
37
|
|
33
38
|
|
39
|
+
### External dependencies
|
40
|
+
|
41
|
+
`local-fastimage_resize`, just as `fastimage_resize`, depends on
|
42
|
+
[libgd](http://www.libgd.org). Therefore you need to have the development
|
43
|
+
headers installed on your system.
|
44
|
+
|
45
|
+
* *Mac OS* (Homebrew): `brew install gd`
|
46
|
+
* *Debian*: `apt-get install libgd-dev`
|
47
|
+
* *Ubuntu*: `apt-get install libgd2-noxpm-dev`
|
48
|
+
|
49
|
+
The Ubuntu package with XPM support will work just as well. It's just, that
|
50
|
+
`fastimage_resize` will not make any use of it.
|
51
|
+
|
34
52
|
|
35
53
|
## Usage
|
36
54
|
|
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,4 +1,5 @@
|
|
1
1
|
require "bundler/gem_tasks"
|
2
|
+
|
2
3
|
require "rake/testtask"
|
3
4
|
|
4
5
|
Rake::TestTask.new(:test) do |t|
|
@@ -7,4 +8,10 @@ Rake::TestTask.new(:test) do |t|
|
|
7
8
|
t.test_files = FileList['test/**/*_test.rb']
|
8
9
|
end
|
9
10
|
|
10
|
-
|
11
|
+
require "rake/extensiontask"
|
12
|
+
|
13
|
+
Rake::ExtensionTask.new "fastimage_native_resize"
|
14
|
+
|
15
|
+
Rake::Task[:test].prerequisites << :compile
|
16
|
+
|
17
|
+
task default: :test
|
@@ -0,0 +1,149 @@
|
|
1
|
+
#include <ruby.h>
|
2
|
+
#include <gd.h>
|
3
|
+
|
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
|
+
) {
|
12
|
+
char *filename_in = StringValuePtr(rb_in);
|
13
|
+
char *filename_out = StringValuePtr(rb_out);
|
14
|
+
int w = NUM2INT(rb_w);
|
15
|
+
int h = NUM2INT(rb_h);
|
16
|
+
int image_type = NUM2INT(rb_image_type);
|
17
|
+
int jpeg_quality = NUM2INT(rb_jpeg_quality);
|
18
|
+
int orientation = NUM2INT(rb_orientation);
|
19
|
+
|
20
|
+
|
21
|
+
gdImagePtr im_in, im_out;
|
22
|
+
FILE *in, *out;
|
23
|
+
int trans = 0, x = 0, y = 0, f = 0;
|
24
|
+
|
25
|
+
in = fopen(filename_in, "rb");
|
26
|
+
if (!in) return Qnil;
|
27
|
+
|
28
|
+
switch(image_type) {
|
29
|
+
case 0: im_in = gdImageCreateFromJpeg(in);
|
30
|
+
break;
|
31
|
+
case 1: im_in = gdImageCreateFromPng(in);
|
32
|
+
break;
|
33
|
+
case 2: im_in = gdImageCreateFromGif(in);
|
34
|
+
trans = gdImageGetTransparent(im_in);
|
35
|
+
/* find a transparent pixel, then turn off transparency
|
36
|
+
so that it copies correctly */
|
37
|
+
if (trans >= 0) {
|
38
|
+
for (x=0; x<gdImageSX(im_in); x++) {
|
39
|
+
for (y=0; y<gdImageSY(im_in); y++) {
|
40
|
+
if (gdImageGetPixel(im_in, x, y) == trans) {
|
41
|
+
f = 1;
|
42
|
+
break;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
if (f) break;
|
46
|
+
}
|
47
|
+
gdImageColorTransparent(im_in, -1);
|
48
|
+
if (!f) trans = -1; /* no transparent pixel found */
|
49
|
+
}
|
50
|
+
break;
|
51
|
+
case 3: im_in = gdImageCreateFromTiff(in);
|
52
|
+
break;
|
53
|
+
}
|
54
|
+
|
55
|
+
if (!im_in) {
|
56
|
+
fclose(in);
|
57
|
+
return Qnil;
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
/* Handle orientation */
|
63
|
+
if (orientation == 5 || orientation == 6) {
|
64
|
+
im_in = gdImageRotateInterpolated(im_in, 270.0, 0);
|
65
|
+
}
|
66
|
+
if (orientation == 7 || orientation == 8) {
|
67
|
+
im_in = gdImageRotateInterpolated(im_in, 90.0, 0);
|
68
|
+
}
|
69
|
+
if (!im_in) {
|
70
|
+
fclose(in);
|
71
|
+
return Qnil;
|
72
|
+
}
|
73
|
+
|
74
|
+
if (orientation == 2 || orientation == 5 || orientation == 7) {
|
75
|
+
gdImageFlipHorizontal(im_in);
|
76
|
+
}
|
77
|
+
if (orientation == 3) {
|
78
|
+
gdImageFlipBoth(im_in);
|
79
|
+
}
|
80
|
+
if (orientation == 4) {
|
81
|
+
gdImageFlipVertical(im_in);
|
82
|
+
}
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
/* Compute target size */
|
87
|
+
if (w == 0 || h == 0) {
|
88
|
+
int originalWidth = gdImageSX(im_in);
|
89
|
+
int originalHeight = gdImageSY(im_in);
|
90
|
+
if (h != 0) {
|
91
|
+
w = (int)(h * originalWidth / originalHeight);
|
92
|
+
} else if (w != 0) {
|
93
|
+
h = (int)(w * originalHeight / originalWidth);
|
94
|
+
} else {
|
95
|
+
w = originalWidth;
|
96
|
+
h = originalHeight;
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
im_out = gdImageCreateTrueColor(w, h); /* must be truecolor */
|
103
|
+
if (im_out) {
|
104
|
+
if (image_type == 1) {
|
105
|
+
gdImageAlphaBlending(im_out, 0); /* handle transparency correctly */
|
106
|
+
gdImageSaveAlpha(im_out, 1);
|
107
|
+
}
|
108
|
+
fclose(in);
|
109
|
+
} else {
|
110
|
+
fclose(in);
|
111
|
+
return Qnil;
|
112
|
+
}
|
113
|
+
|
114
|
+
/* Now copy the original */
|
115
|
+
gdImageCopyResampled(im_out, im_in, 0, 0, 0, 0,
|
116
|
+
gdImageSX(im_out), gdImageSY(im_out),
|
117
|
+
gdImageSX(im_in), gdImageSY(im_in));
|
118
|
+
|
119
|
+
out = fopen(filename_out, "wb");
|
120
|
+
if (out) {
|
121
|
+
switch(image_type) {
|
122
|
+
case 0: gdImageJpeg(im_out, out, jpeg_quality);
|
123
|
+
break;
|
124
|
+
case 1: gdImagePng(im_out, out);
|
125
|
+
break;
|
126
|
+
case 2: gdImageTrueColorToPalette(im_out, 0, 256);
|
127
|
+
if (trans >= 0) {
|
128
|
+
trans = gdImageGetPixel(im_out, x, y); /* get the color index of our transparent pixel */
|
129
|
+
gdImageColorTransparent(im_out, trans); /* may not always work as hoped */
|
130
|
+
}
|
131
|
+
gdImageGif(im_out, out);
|
132
|
+
break;
|
133
|
+
case 3: gdImagePng(im_out, out);
|
134
|
+
break;
|
135
|
+
}
|
136
|
+
fclose(out);
|
137
|
+
}
|
138
|
+
gdImageDestroy(im_in);
|
139
|
+
gdImageDestroy(im_out);
|
140
|
+
return Qnil;
|
141
|
+
}
|
142
|
+
|
143
|
+
void Init_fastimage_native_resize(void) {
|
144
|
+
VALUE cFastImageResize;
|
145
|
+
|
146
|
+
cFastImageResize = rb_const_get(rb_cObject, rb_intern("FastImage"));
|
147
|
+
|
148
|
+
rb_define_singleton_method(cFastImageResize, "native_resize", fastimage_native_resize, 7);
|
149
|
+
}
|
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
|
@@ -19,13 +21,13 @@
|
|
19
21
|
#
|
20
22
|
# * http://blog.new-bamboo.co.uk/2007/12/3/super-f-simple-resizing
|
21
23
|
|
22
|
-
require 'inline'
|
23
24
|
require 'tempfile'
|
24
25
|
require 'fastimage'
|
26
|
+
require 'fastimage_native_resize'
|
25
27
|
|
26
28
|
module FastImage::Resize
|
27
|
-
SUPPORTED_FORMATS = [:jpeg, :png, :gif]
|
28
|
-
FILE_EXTENSIONS = [:jpg, :png, :gif] # prefer jpg to jpeg as an extension
|
29
|
+
SUPPORTED_FORMATS = [:jpeg, :png, :gif, :tiff]
|
30
|
+
FILE_EXTENSIONS = [:jpg, :png, :gif, :tiff] # prefer jpg to jpeg as an extension
|
29
31
|
|
30
32
|
class FormatNotSupported < FastImage::FastImageException # :nodoc:
|
31
33
|
end
|
@@ -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,102 +77,13 @@ module FastImage::Resize
|
|
75
77
|
temp_file = nil
|
76
78
|
end
|
77
79
|
|
78
|
-
|
80
|
+
FastImage.native_resize(path, file_out.to_s, width.to_i, height.to_i, type_index, jpeg_quality.to_i, orientation)
|
81
|
+
|
82
|
+
raise FastImage::ImageFetchFailure, 'Image could be created' unless File.exist?(file_out.to_s)
|
79
83
|
|
80
84
|
temp_file
|
81
85
|
rescue RuntimeError => e
|
82
|
-
raise ImageFetchFailure, e.message
|
83
|
-
end
|
84
|
-
|
85
|
-
private
|
86
|
-
|
87
|
-
def resize_image(filename_in, filename_out, w, h, image_type, jpeg_quality); end
|
88
|
-
|
89
|
-
inline do |builder|
|
90
|
-
builder.include '"gd.h"'
|
91
|
-
builder.add_link_flags "-lgd"
|
92
|
-
|
93
|
-
builder.c <<-"END"
|
94
|
-
VALUE resize_image(char *filename_in, char *filename_out, int w, int h, int image_type, int jpeg_quality) {
|
95
|
-
gdImagePtr im_in, im_out;
|
96
|
-
FILE *in, *out;
|
97
|
-
int trans = 0, x = 0, y = 0, f = 0;
|
98
|
-
|
99
|
-
in = fopen(filename_in, "rb");
|
100
|
-
if (!in) return Qnil;
|
101
|
-
|
102
|
-
switch(image_type) {
|
103
|
-
case 0: im_in = gdImageCreateFromJpeg(in);
|
104
|
-
break;
|
105
|
-
case 1: im_in = gdImageCreateFromPng(in);
|
106
|
-
break;
|
107
|
-
case 2: im_in = gdImageCreateFromGif(in);
|
108
|
-
trans = gdImageGetTransparent(im_in);
|
109
|
-
/* find a transparent pixel, then turn off transparency
|
110
|
-
so that it copies correctly */
|
111
|
-
if (trans >= 0) {
|
112
|
-
for (x=0; x<gdImageSX(im_in); x++) {
|
113
|
-
for (y=0; y<gdImageSY(im_in); y++) {
|
114
|
-
if (gdImageGetPixel(im_in, x, y) == trans) {
|
115
|
-
f = 1;
|
116
|
-
break;
|
117
|
-
}
|
118
|
-
}
|
119
|
-
if (f) break;
|
120
|
-
}
|
121
|
-
gdImageColorTransparent(im_in, -1);
|
122
|
-
if (!f) trans = -1; /* no transparent pixel found */
|
123
|
-
}
|
124
|
-
break;
|
125
|
-
default: return Qnil;
|
126
|
-
}
|
127
|
-
|
128
|
-
if (w == 0 || h == 0) {
|
129
|
-
int originalWidth = gdImageSX(im_in);
|
130
|
-
int originalHeight = gdImageSY(im_in);
|
131
|
-
if (w == 0) {
|
132
|
-
w = (int)(h * originalWidth / originalHeight);
|
133
|
-
} else {
|
134
|
-
h = (int)(w * originalHeight / originalWidth);
|
135
|
-
}
|
136
|
-
}
|
137
|
-
|
138
|
-
im_out = gdImageCreateTrueColor(w, h); /* must be truecolor */
|
139
|
-
|
140
|
-
if (image_type == 1) {
|
141
|
-
gdImageAlphaBlending(im_out, 0); /* handle transparency correctly */
|
142
|
-
gdImageSaveAlpha(im_out, 1);
|
143
|
-
}
|
144
|
-
|
145
|
-
fclose(in);
|
146
|
-
|
147
|
-
/* Now copy the original */
|
148
|
-
gdImageCopyResampled(im_out, im_in, 0, 0, 0, 0,
|
149
|
-
gdImageSX(im_out), gdImageSY(im_out),
|
150
|
-
gdImageSX(im_in), gdImageSY(im_in));
|
151
|
-
|
152
|
-
out = fopen(filename_out, "wb");
|
153
|
-
if (out) {
|
154
|
-
switch(image_type) {
|
155
|
-
case 0: gdImageJpeg(im_out, out, jpeg_quality);
|
156
|
-
break;
|
157
|
-
case 1: gdImagePng(im_out, out);
|
158
|
-
break;
|
159
|
-
case 2: gdImageTrueColorToPalette(im_out, 0, 256);
|
160
|
-
if (trans >= 0) {
|
161
|
-
trans = gdImageGetPixel(im_out, x, y); /* get the color index of our transparent pixel */
|
162
|
-
gdImageColorTransparent(im_out, trans); /* may not always work as hoped */
|
163
|
-
}
|
164
|
-
gdImageGif(im_out, out);
|
165
|
-
break;
|
166
|
-
}
|
167
|
-
fclose(out);
|
168
|
-
}
|
169
|
-
gdImageDestroy(im_in);
|
170
|
-
gdImageDestroy(im_out);
|
171
|
-
return Qnil;
|
172
|
-
}
|
173
|
-
END
|
86
|
+
raise FastImage::ImageFetchFailure, e.message
|
174
87
|
end
|
175
88
|
end
|
176
89
|
|
@@ -17,13 +17,15 @@ Gem::Specification.new do |s|
|
|
17
17
|
|
18
18
|
s.license = "MIT"
|
19
19
|
|
20
|
-
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test
|
20
|
+
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin|test)/}) }
|
21
21
|
s.require_paths = ["lib"]
|
22
22
|
|
23
|
-
s.
|
23
|
+
s.extensions = "ext/fastimage_native_resize/extconf.rb"
|
24
|
+
|
24
25
|
s.add_dependency "local-fastimage", "~> 3.0"
|
25
26
|
|
26
|
-
s.add_development_dependency "bundler"
|
27
|
-
s.add_development_dependency "rake"
|
28
|
-
s.add_development_dependency "minitest"
|
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"
|
29
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.0
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Sykes
|
@@ -9,22 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-02-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: RubyInline
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: 3.8.2
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: 3.8.2
|
28
14
|
- !ruby/object:Gem::Dependency
|
29
15
|
name: local-fastimage
|
30
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -43,44 +29,58 @@ dependencies:
|
|
43
29
|
name: bundler
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
45
31
|
requirements:
|
46
|
-
- - "
|
32
|
+
- - ">="
|
47
33
|
- !ruby/object:Gem::Version
|
48
|
-
version: '
|
34
|
+
version: '0'
|
49
35
|
type: :development
|
50
36
|
prerelease: false
|
51
37
|
version_requirements: !ruby/object:Gem::Requirement
|
52
38
|
requirements:
|
53
|
-
- - "
|
39
|
+
- - ">="
|
54
40
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
41
|
+
version: '0'
|
56
42
|
- !ruby/object:Gem::Dependency
|
57
43
|
name: rake
|
58
44
|
requirement: !ruby/object:Gem::Requirement
|
59
45
|
requirements:
|
60
|
-
- - "
|
46
|
+
- - ">="
|
61
47
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
48
|
+
version: '0'
|
63
49
|
type: :development
|
64
50
|
prerelease: false
|
65
51
|
version_requirements: !ruby/object:Gem::Requirement
|
66
52
|
requirements:
|
67
|
-
- - "
|
53
|
+
- - ">="
|
68
54
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
55
|
+
version: '0'
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: minitest
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
|
-
- - "
|
60
|
+
- - ">="
|
75
61
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
62
|
+
version: '0'
|
77
63
|
type: :development
|
78
64
|
prerelease: false
|
79
65
|
version_requirements: !ruby/object:Gem::Requirement
|
80
66
|
requirements:
|
81
|
-
- - "
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake-compiler
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '
|
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:
|
@@ -88,18 +88,21 @@ email:
|
|
88
88
|
- gregor@plan.io
|
89
89
|
- support@plan.io
|
90
90
|
executables: []
|
91
|
-
extensions:
|
91
|
+
extensions:
|
92
|
+
- ext/fastimage_native_resize/extconf.rb
|
92
93
|
extra_rdoc_files: []
|
93
94
|
files:
|
94
95
|
- ".gitignore"
|
96
|
+
- ".travis.yml"
|
95
97
|
- CHANGELOG.md
|
96
98
|
- Gemfile
|
97
99
|
- MIT_LICENCE
|
98
|
-
- README
|
99
100
|
- README.md
|
100
101
|
- README.textile
|
101
102
|
- Rakefile
|
102
103
|
- VERSION.yml
|
104
|
+
- ext/fastimage_native_resize/extconf.rb
|
105
|
+
- ext/fastimage_native_resize/fastimage_native_resize.c
|
103
106
|
- lib/fastimage/resize.rb
|
104
107
|
- lib/fastimage/resize/version.rb
|
105
108
|
- local-fastimage_resize.gemspec
|
@@ -124,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
127
|
requirements:
|
125
128
|
- libgd, see www.libgd.org
|
126
129
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.4
|
130
|
+
rubygems_version: 2.6.14.4
|
128
131
|
signing_key:
|
129
132
|
specification_version: 4
|
130
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
|