imforger 0.1.1 → 0.2.2
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.
- data.tar.gz.sig +0 -0
- data/.autotest +0 -23
- data/Gemfile +15 -0
- data/Gemfile.lock +26 -0
- data/History.txt +15 -3
- data/Manifest.txt +5 -0
- data/README.txt +33 -3
- data/Rakefile +1 -0
- data/benchmark/benchmark.rb +45 -0
- data/ext/imforger/imforger.c +70 -16
- data/lib/imforger.rb +14 -3
- data/lib/imforger.so +0 -0
- data/test/fixtures/large.original.jpg +0 -0
- data/test/test_imforger.rb +51 -0
- metadata +73 -45
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/.autotest
CHANGED
@@ -1,23 +0,0 @@
|
|
1
|
-
# -*- ruby -*-
|
2
|
-
|
3
|
-
require 'autotest/restart'
|
4
|
-
|
5
|
-
# Autotest.add_hook :initialize do |at|
|
6
|
-
# at.extra_files << "../some/external/dependency.rb"
|
7
|
-
#
|
8
|
-
# at.libs << ":../some/external"
|
9
|
-
#
|
10
|
-
# at.add_exception 'vendor'
|
11
|
-
#
|
12
|
-
# at.add_mapping(/dependency.rb/) do |f, _|
|
13
|
-
# at.files_matching(/test_.*rb$/)
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# %w(TestA TestB).each do |klass|
|
17
|
-
# at.extra_class_map[klass] = "test/test_misc.rb"
|
18
|
-
# end
|
19
|
-
# end
|
20
|
-
|
21
|
-
# Autotest.add_hook :run_command do |at|
|
22
|
-
# system "rake build"
|
23
|
-
# end
|
data/Gemfile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
# Add dependencies required to use your gem here.
|
3
|
+
# Example:
|
4
|
+
# gem "activesupport", ">= 2.3.5"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "bundler"
|
10
|
+
gem "hoe"
|
11
|
+
gem "hoe-git"
|
12
|
+
gem "hoe-doofus"
|
13
|
+
gem "hoe-gemcutter"
|
14
|
+
gem "rake-compiler"
|
15
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
gemcutter (0.7.0)
|
5
|
+
hoe (2.9.1)
|
6
|
+
rake (>= 0.8.7)
|
7
|
+
hoe-doofus (1.0.0)
|
8
|
+
hoe-gemcutter (1.0.0)
|
9
|
+
gemcutter (>= 0.1.3)
|
10
|
+
hoe (>= 2.3.3)
|
11
|
+
hoe-git (1.3.0)
|
12
|
+
hoe (>= 2.2.0)
|
13
|
+
rake (0.8.7)
|
14
|
+
rake-compiler (0.7.6)
|
15
|
+
rake
|
16
|
+
|
17
|
+
PLATFORMS
|
18
|
+
ruby
|
19
|
+
|
20
|
+
DEPENDENCIES
|
21
|
+
bundler
|
22
|
+
hoe
|
23
|
+
hoe-doofus
|
24
|
+
hoe-gemcutter
|
25
|
+
hoe-git
|
26
|
+
rake-compiler
|
data/History.txt
CHANGED
@@ -1,6 +1,18 @@
|
|
1
|
-
===
|
1
|
+
=== 0.2.2 / 2011-03-31
|
2
2
|
|
3
|
-
*
|
3
|
+
* Supports explicit format declaration:
|
4
4
|
|
5
|
-
|
5
|
+
Imforger.new(input_file_path).to_file(output_file_path, :format => 'tif')
|
6
|
+
|
7
|
+
=== 0.2.1 / 2011-03-31
|
8
|
+
|
9
|
+
* Deghettofied the options to use symbols instead of string:
|
10
|
+
|
11
|
+
Imforger.new(input_file_path).to_file(output_file_path, :width => 100,
|
12
|
+
:height => 100)
|
13
|
+
|
14
|
+
=== 0.2.0 / 2011-03-31
|
15
|
+
|
16
|
+
* Library now supports :maxwidth, :maxheight
|
17
|
+
* Includes benchmark/benchmark.rb
|
6
18
|
|
data/Manifest.txt
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
.autotest
|
2
|
+
Gemfile
|
3
|
+
Gemfile.lock
|
2
4
|
History.txt
|
3
5
|
Manifest.txt
|
4
6
|
README.txt
|
5
7
|
Rakefile
|
8
|
+
benchmark/benchmark.rb
|
6
9
|
ext/imforger/extconf.rb
|
7
10
|
ext/imforger/imforger.c
|
8
11
|
lib/imforger.rb
|
12
|
+
lib/imforger.so
|
13
|
+
test/fixtures/large.original.jpg
|
9
14
|
test/helper.rb
|
10
15
|
test/test_imforger.rb
|
data/README.txt
CHANGED
@@ -2,11 +2,15 @@
|
|
2
2
|
|
3
3
|
== DESCRIPTION:
|
4
4
|
|
5
|
-
Imforger
|
5
|
+
Imforger
|
6
|
+
[short for Image Forger, because we are making copies of images]
|
7
|
+
|
8
|
+
This class relies on the Imlib2 library to quickly convert between different file types, scaling and compressing on the way.
|
6
9
|
|
7
10
|
== FEATURES/PROBLEMS:
|
8
11
|
|
9
|
-
As far as I know, this gem only works on Linux and Ruby 1.9+
|
12
|
+
As far as I know, this gem only works on Linux and Ruby 1.9+ Anyone
|
13
|
+
know how to install the dev files for Imlib2, please let me know.
|
10
14
|
|
11
15
|
Imlib2 drops the ICC profile and XMP tags when it creates the new image. I have been using exiftool to copy the ICC profile and XMP tags over. This is still much faster than ImageMagick et al.
|
12
16
|
|
@@ -15,6 +19,18 @@ Imlib2 drops the ICC profile and XMP tags when it creates the new image. I have
|
|
15
19
|
require 'imforger'
|
16
20
|
Imforger.new(input_file_path).to_file(output_file_path)
|
17
21
|
|
22
|
+
or:
|
23
|
+
|
24
|
+
Imforger.new(input_file_path).to_file(output_file_path, :width => 100,
|
25
|
+
:height => 100)
|
26
|
+
|
27
|
+
or:
|
28
|
+
|
29
|
+
Imforger.new(input_file_path).to_file(output_file_path, :maxwidth => 1000,
|
30
|
+
:maxheight => 1000, :format => 'tif')
|
31
|
+
|
32
|
+
See the test file for other examples.
|
33
|
+
|
18
34
|
== REQUIREMENTS:
|
19
35
|
|
20
36
|
Imlib2
|
@@ -25,7 +41,21 @@ gem install imforger
|
|
25
41
|
|
26
42
|
== SPEED:
|
27
43
|
|
28
|
-
ImageMagick was too slow and used too much memory. [I didn't even bother frobnicating with RMagick.] I also compared to the NetPBM library for good measure.
|
44
|
+
The purpose of this gem is to scale images and save them out quickly. ImageMagick was too slow and used too much memory. [I didn't even bother frobnicating with RMagick.] I include a benchmark that I used in the benchmark dir. Results belew. I also compared to the NetPBM library for good measure.
|
45
|
+
|
46
|
+
$ ruby benchmark/benchmark.rb
|
47
|
+
|
48
|
+
user system total real
|
49
|
+
ImageMagick 0.000000 0.010000 1.710000 ( 0.729113)
|
50
|
+
NetPBM 0.000000 0.000000 0.700000 ( 0.391043)
|
51
|
+
Imforger 0.310000 0.010000 0.320000 ( 0.321695)
|
52
|
+
|
53
|
+
Changing the input file size and format showed similar results: Imforger
|
54
|
+
is roughly twice as fast as calling out ImageMagick in realtime on a
|
55
|
+
dual-core laptop, and also
|
56
|
+
noticeably faster than NetPBM. I don't include memory usage numbers
|
57
|
+
here, but anecdotally I did notice significantly less RAM usage with Imforger vs
|
58
|
+
ImageMagick.
|
29
59
|
|
30
60
|
== LICENSE:
|
31
61
|
|
data/Rakefile
CHANGED
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'imforger'
|
2
|
+
require 'benchmark'
|
3
|
+
require 'fileutils'
|
4
|
+
require 'open3'
|
5
|
+
|
6
|
+
Benchmark.bm(12) do |x|
|
7
|
+
#test these image scaling methods
|
8
|
+
benchmark = [
|
9
|
+
:imagemagick,
|
10
|
+
:netpbm,
|
11
|
+
:imlib
|
12
|
+
]
|
13
|
+
|
14
|
+
@original_file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'test', 'fixtures', 'large.original.jpg'))
|
15
|
+
@input_file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'tmp', 'input.jpg'))
|
16
|
+
@output_file = lambda{|type| File.expand_path(File.join(File.dirname(__FILE__), '..', 'tmp', "output.#{type}.jpg"))}
|
17
|
+
|
18
|
+
#prep the files
|
19
|
+
raise "Cannot find original file #{@original_file}." unless File.exist?(@original_file)
|
20
|
+
FileUtils.cp(@original_file, @input_file)
|
21
|
+
|
22
|
+
#silence stupid pnmtojpeg
|
23
|
+
$stderr.reopen(File.open('/dev/null','w+'))
|
24
|
+
|
25
|
+
x.report("ImageMagick") do
|
26
|
+
`convert #{@input_file} -resize 100x100\! #{@output_file.call('ImageMagick')}`
|
27
|
+
end if benchmark.include?(:imagemagick)
|
28
|
+
|
29
|
+
x.report("NetPBM") do
|
30
|
+
`/usr/bin/anytopnm #{@input_file} | /usr/bin/pamscale -width 100 -height 100 | /usr/bin/pnmtojpeg > #{@output_file.call('NetPBM')}`
|
31
|
+
end if benchmark.include?(:netpbm)
|
32
|
+
|
33
|
+
x.report("Imlib") do
|
34
|
+
fr = Imforger.new @input_file
|
35
|
+
fr.to_file "#{@output_file.call('Imlib')}", :width => 100, :height => 100
|
36
|
+
end if benchmark.include?(:imlib)
|
37
|
+
|
38
|
+
#cleanup files
|
39
|
+
if true && false
|
40
|
+
FileUtils.rm @input_file
|
41
|
+
[ 'ImageMagick', 'NetPBM', 'Imforger'].each do |type|
|
42
|
+
FileUtils.rm @output_file.call(type)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/ext/imforger/imforger.c
CHANGED
@@ -10,21 +10,35 @@
|
|
10
10
|
/* ruby */
|
11
11
|
#include <ruby.h>
|
12
12
|
|
13
|
-
static VALUE imforger_save_file(VALUE self, VALUE
|
13
|
+
static VALUE imforger_save_file(VALUE self, VALUE outputString)
|
14
14
|
{
|
15
|
-
VALUE
|
16
|
-
VALUE
|
15
|
+
VALUE r_input_image;
|
16
|
+
VALUE r_output_image;
|
17
|
+
VALUE r_options;
|
18
|
+
VALUE r_width;
|
19
|
+
VALUE r_height;
|
20
|
+
VALUE r_maxwidth;
|
21
|
+
VALUE r_maxheight;
|
22
|
+
VALUE r_format;
|
23
|
+
|
17
24
|
char *imagePath1;
|
18
25
|
char *imagePath2;
|
26
|
+
char *format;
|
27
|
+
|
28
|
+
int width;
|
29
|
+
int height;
|
30
|
+
float scale;
|
31
|
+
|
19
32
|
/* image handles */
|
20
33
|
Imlib_Image image1;
|
21
34
|
Imlib_Image image2;
|
22
35
|
|
23
|
-
|
24
|
-
|
36
|
+
r_input_image = rb_iv_get(self, "@input_image");
|
37
|
+
r_output_image = rb_iv_set(self, "@output_image", outputString);
|
38
|
+
r_options = rb_iv_get(self, "@options");
|
25
39
|
|
26
|
-
imagePath1 = StringValuePtr(
|
27
|
-
imagePath2 = StringValuePtr(
|
40
|
+
imagePath1 = StringValuePtr(r_input_image);
|
41
|
+
imagePath2 = StringValuePtr(r_output_image);
|
28
42
|
|
29
43
|
/* check that the file exists and can be read */
|
30
44
|
/* TODO: raise a real error */
|
@@ -40,17 +54,57 @@ static VALUE imforger_save_file(VALUE self, VALUE anObject)
|
|
40
54
|
char *tmp;
|
41
55
|
/* set the image1 we loaded as the current context image1 to work on */
|
42
56
|
imlib_context_set_image(image1);
|
43
|
-
|
57
|
+
|
58
|
+
/* if the width and height were set, use that; otherwise use the
|
59
|
+
* current dimensions */
|
60
|
+
r_width = rb_hash_aref(r_options, ID2SYM(rb_intern("width")));
|
61
|
+
r_height = rb_hash_aref(r_options, ID2SYM(rb_intern("height")));
|
62
|
+
if(r_width == Qnil){
|
63
|
+
width = imlib_image_get_width();
|
64
|
+
} else {
|
65
|
+
width = NUM2INT(r_width);
|
66
|
+
}
|
67
|
+
if(r_height == Qnil){
|
68
|
+
height = imlib_image_get_height();
|
69
|
+
} else {
|
70
|
+
height = NUM2INT(r_height);
|
71
|
+
}
|
72
|
+
|
73
|
+
/* going for maximum height */
|
74
|
+
r_maxwidth = rb_hash_aref(r_options, ID2SYM(rb_intern("maxwidth")));
|
75
|
+
r_maxheight = rb_hash_aref(r_options, ID2SYM(rb_intern("maxheight")));
|
76
|
+
if(r_maxwidth != Qnil){
|
77
|
+
if(width > NUM2INT(r_maxwidth)){
|
78
|
+
scale = NUM2INT(r_maxwidth) / (float)width;
|
79
|
+
width = NUM2INT(r_maxwidth);
|
80
|
+
height = (int)(scale * height);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
if(r_maxheight != Qnil){
|
84
|
+
if(height > NUM2INT(r_maxheight)){
|
85
|
+
scale = NUM2INT(r_maxheight) / (float)height;
|
86
|
+
height = NUM2INT(r_maxheight);
|
87
|
+
width = (int)(scale * width);
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
/* set the image1 format
|
92
|
+
* to be the format of the extension of our last */
|
44
93
|
/* argument - i.e. .png = png, .tif = tiff etc. */
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
/* save the image1 */
|
52
|
-
imlib_save_image(imagePath2);
|
94
|
+
r_format = rb_hash_aref(r_options, ID2SYM(rb_intern("format")));
|
95
|
+
if(r_format != Qnil){
|
96
|
+
format = StringValuePtr(r_format);
|
97
|
+
} else {
|
98
|
+
tmp = strrchr(imagePath2, '.');
|
99
|
+
format = (tmp + 1);
|
53
100
|
}
|
101
|
+
imlib_context_set_anti_alias(1);
|
102
|
+
image2 = imlib_create_cropped_scaled_image(0,0,imlib_image_get_width(),imlib_image_get_height(),width,height);
|
103
|
+
imlib_context_set_image(image2);
|
104
|
+
imlib_image_set_format(format);
|
105
|
+
/* save the image1 */
|
106
|
+
imlib_save_image(imagePath2);
|
107
|
+
}
|
54
108
|
return Qtrue;
|
55
109
|
}
|
56
110
|
|
data/lib/imforger.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'imforger.so'
|
2
2
|
|
3
3
|
class Imforger
|
4
|
-
VERSION = '0.
|
4
|
+
VERSION = '0.2.2'
|
5
5
|
|
6
|
-
attr_accessor :input_image, :output_image
|
6
|
+
attr_accessor :input_image, :output_image, :options
|
7
7
|
|
8
8
|
class Exception < RuntimeError; end
|
9
9
|
|
@@ -12,9 +12,20 @@ class Imforger
|
|
12
12
|
|
13
13
|
raise(Imforger::Exception, "Input file not found!") unless File.exists?(path)
|
14
14
|
@input_image = path
|
15
|
+
@options = {}
|
15
16
|
end
|
16
17
|
|
17
|
-
def to_file(output_path)
|
18
|
+
def to_file(output_path, opts = {})
|
19
|
+
@options.merge!(opts)
|
20
|
+
check_format
|
21
|
+
|
18
22
|
save_file(File.expand_path(output_path))
|
19
23
|
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def check_format
|
27
|
+
if @options[:format]
|
28
|
+
raise(Imforger::Exception, "I don't know if that file format is supported!") unless %w(tif png jpg).include?(@options[:format])
|
29
|
+
end
|
30
|
+
end
|
20
31
|
end
|
data/lib/imforger.so
ADDED
Binary file
|
Binary file
|
data/test/test_imforger.rb
CHANGED
@@ -1,9 +1,60 @@
|
|
1
1
|
require 'helper'
|
2
|
+
require 'fileutils'
|
2
3
|
|
3
4
|
class TestImforger < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@original_file = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', 'large.original.jpg'))
|
7
|
+
@input_file = File.expand_path(File.join(File.dirname(__FILE__), '..', 'tmp', 'input.jpg'))
|
8
|
+
@output_file = lambda{|type| File.expand_path(File.join(File.dirname(__FILE__), '..', 'tmp', "output.#{type}.jpg"))}
|
9
|
+
|
10
|
+
#prep the files
|
11
|
+
raise "Cannot find original file #{@original_file}." unless File.exist?(@original_file)
|
12
|
+
FileUtils.cp(@original_file, @input_file)
|
13
|
+
end
|
14
|
+
|
4
15
|
def test_raise_an_error_if_no_path_to_file
|
5
16
|
assert_raises Imforger::Exception do
|
6
17
|
Imforger.new('./this_file_doesnt_exist')
|
7
18
|
end
|
8
19
|
end
|
20
|
+
|
21
|
+
def test_creates_new_image
|
22
|
+
path = @output_file.call('copy')
|
23
|
+
|
24
|
+
fr = Imforger.new @input_file
|
25
|
+
fr.to_file path
|
26
|
+
assert File.exists?(path)
|
27
|
+
assert File.size(path) > 1500000
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_creates_new_image_smaller_size
|
31
|
+
path = @output_file.call('smaller')
|
32
|
+
|
33
|
+
fr = Imforger.new @input_file
|
34
|
+
fr.to_file path, :width => 100, :height => 100
|
35
|
+
assert File.size(path) > 3000
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_creates_new_bounded_size
|
39
|
+
path = @output_file.call('bounded')
|
40
|
+
|
41
|
+
fr = Imforger.new @input_file
|
42
|
+
fr.to_file path, :maxwidth => 117, :maxheight => 120
|
43
|
+
assert File.size(path) > 3900
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_creates_new_image_different_format
|
47
|
+
%w(tif png jpg).each do |extension|
|
48
|
+
path = "#{@output_file.call('format')}.#{extension}"
|
49
|
+
fr = Imforger.new(@input_file).to_file(path, :format => extension)
|
50
|
+
assert((File.size(path) > 1500000), "Could not create file of type #{extension}.")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_raises_an_error_if_unknown_format
|
55
|
+
fr = Imforger.new @input_file
|
56
|
+
assert_raises Imforger::Exception do
|
57
|
+
fr.to_file '/dev/null', :format => 'pizza'
|
58
|
+
end
|
59
|
+
end
|
9
60
|
end
|
metadata
CHANGED
@@ -1,111 +1,139 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: imforger
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.2
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.1
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Casey Rosenthal
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
-
|
13
|
-
|
11
|
+
cert_chain:
|
12
|
+
- ! '-----BEGIN CERTIFICATE-----
|
13
|
+
|
14
14
|
MIIDKjCCAhKgAwIBAgIBADANBgkqhkiG9w0BAQUFADA7MQwwCgYDVQQDDANjbHIx
|
15
|
+
|
15
16
|
FjAUBgoJkiaJk/IsZAEZFgZwb3J0NDkxEzARBgoJkiaJk/IsZAEZFgNjb20wHhcN
|
17
|
+
|
16
18
|
MTEwMzI1MjIyNTA2WhcNMTIwMzI0MjIyNTA2WjA7MQwwCgYDVQQDDANjbHIxFjAU
|
19
|
+
|
17
20
|
BgoJkiaJk/IsZAEZFgZwb3J0NDkxEzARBgoJkiaJk/IsZAEZFgNjb20wggEiMA0G
|
21
|
+
|
18
22
|
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFO65jA8Vm6mrySAEh0p9zMJ/c8pif
|
23
|
+
|
19
24
|
AwrL8K/fQzBOD8WjaHbt3WlDut4tBtzBpspaObbszg0QhH8ixvdIteaNaqWt5ivB
|
25
|
+
|
20
26
|
85BPy2NV/yBBhKZ3JshlivgcKr6RRwP/NfwVVWXMBCmX6d1/9hicHES7gLP61RLY
|
27
|
+
|
21
28
|
a13gfyuVSm1FipnzIWrgj1ArEQvLc5Qzp08ekolU3xvTQaItDPCh2ImaCixhlFaV
|
29
|
+
|
22
30
|
SZxGk2HEv5sdK2HiZfdN4P8dVBhWEK+HXh4WuyqivGI0mHioQNrAU2VSka0NN/dZ
|
31
|
+
|
23
32
|
NysVmj3E+P3EQaSJ1Apey6WVgozw/Jd2tRrcPp4bvNTcMcstXxDDdajLAgMBAAGj
|
33
|
+
|
24
34
|
OTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFJGwO8OOOSuETTTIgEHrFaPYZY50MAsG
|
35
|
+
|
25
36
|
A1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEAFZq0kRxt5VII27uV/lReyzAz
|
37
|
+
|
26
38
|
q5MWDtOv8hgUcF6DqsR8vMwYUtbl8CpKerY7CCdq8SBgI73gTSg0FlKhu/TWJyVS
|
39
|
+
|
27
40
|
vbD8qTsLMSJ1eagrRzY0W/hbl07CdFAunPKYw9vIOsQXBDLPoJoPogpSkbTGaUnD
|
41
|
+
|
28
42
|
NqVRcPwXgmwCdlJYOOBXh6QxArisZ/dFNtVZY2zUJCfdxpUwlXEtNvh9z+502nWp
|
43
|
+
|
29
44
|
B5PckRdTFq05psR5w5RInK0QZstX464GDSUs+CL7JvwXJKtnDGLb4/+xY3j5a/f6
|
45
|
+
|
30
46
|
ZZgY9wEKsxYB1Clu7uMdVBMb1hI4Kr/k6wDqXfpoZW9ltiyjmmgWvWAfPEsgSg==
|
47
|
+
|
31
48
|
-----END CERTIFICATE-----
|
32
49
|
|
33
|
-
|
50
|
+
'
|
51
|
+
date: 2011-03-31 00:00:00.000000000 -07:00
|
34
52
|
default_executable:
|
35
|
-
dependencies:
|
36
|
-
- !ruby/object:Gem::Dependency
|
53
|
+
dependencies:
|
54
|
+
- !ruby/object:Gem::Dependency
|
37
55
|
name: rake-compiler
|
38
|
-
|
39
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
56
|
+
requirement: &16507700 !ruby/object:Gem::Requirement
|
40
57
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
44
61
|
version: 0.4.1
|
45
62
|
type: :development
|
46
|
-
version_requirements: *id001
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: hoe
|
49
63
|
prerelease: false
|
50
|
-
|
64
|
+
version_requirements: *16507700
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
name: hoe
|
67
|
+
requirement: &16475160 !ruby/object:Gem::Requirement
|
51
68
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
69
|
+
requirements:
|
70
|
+
- - ! '>='
|
71
|
+
- !ruby/object:Gem::Version
|
55
72
|
version: 2.9.1
|
56
73
|
type: :development
|
57
|
-
|
58
|
-
|
59
|
-
|
74
|
+
prerelease: false
|
75
|
+
version_requirements: *16475160
|
76
|
+
description: ! 'Imforger
|
77
|
+
|
78
|
+
[short for Image Forger, because we are making copies of images]
|
79
|
+
|
80
|
+
|
81
|
+
This class relies on the Imlib2 library to quickly convert between different file
|
82
|
+
types, scaling and compressing on the way.'
|
83
|
+
email:
|
60
84
|
- clr@port49.com
|
61
85
|
executables: []
|
62
|
-
|
63
|
-
extensions:
|
86
|
+
extensions:
|
64
87
|
- ext/imforger/extconf.rb
|
65
|
-
extra_rdoc_files:
|
88
|
+
extra_rdoc_files:
|
66
89
|
- History.txt
|
67
90
|
- Manifest.txt
|
68
91
|
- README.txt
|
69
|
-
files:
|
92
|
+
files:
|
70
93
|
- .autotest
|
94
|
+
- Gemfile
|
95
|
+
- Gemfile.lock
|
71
96
|
- History.txt
|
72
97
|
- Manifest.txt
|
73
98
|
- README.txt
|
74
99
|
- Rakefile
|
100
|
+
- benchmark/benchmark.rb
|
75
101
|
- ext/imforger/extconf.rb
|
76
102
|
- ext/imforger/imforger.c
|
77
103
|
- lib/imforger.rb
|
104
|
+
- lib/imforger.so
|
105
|
+
- test/fixtures/large.original.jpg
|
78
106
|
- test/helper.rb
|
79
107
|
- test/test_imforger.rb
|
80
108
|
- .gemtest
|
81
109
|
has_rdoc: true
|
82
110
|
homepage:
|
83
111
|
licenses: []
|
84
|
-
|
85
112
|
post_install_message:
|
86
|
-
rdoc_options:
|
113
|
+
rdoc_options:
|
87
114
|
- --main
|
88
115
|
- README.txt
|
89
|
-
require_paths:
|
116
|
+
require_paths:
|
90
117
|
- lib
|
91
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
119
|
none: false
|
93
|
-
requirements:
|
94
|
-
- -
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ! '>='
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
125
|
none: false
|
99
|
-
requirements:
|
100
|
-
- -
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version:
|
126
|
+
requirements:
|
127
|
+
- - ! '>='
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
103
130
|
requirements: []
|
104
|
-
|
105
131
|
rubyforge_project: imforger
|
106
132
|
rubygems_version: 1.6.2
|
107
133
|
signing_key:
|
108
134
|
specification_version: 3
|
109
|
-
summary: Imforger
|
110
|
-
|
135
|
+
summary: Imforger [short for Image Forger, because we are making copies of images] This
|
136
|
+
class relies on the Imlib2 library to quickly convert between different file types,
|
137
|
+
scaling and compressing on the way.
|
138
|
+
test_files:
|
111
139
|
- test/test_imforger.rb
|
metadata.gz.sig
CHANGED
Binary file
|