imageruby-devil 0.1.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.
data/README ADDED
@@ -0,0 +1,56 @@
1
+ = ImageRuby-Devil - Bridge between ImageRuby and Devil image library
2
+
3
+ Implements a set of features for ImageRuby using Devil image library (https://github.com/banister/devil)
4
+
5
+ * Support to load and save formats supported by devil library including jpg, tga, png, etc...
6
+
7
+ * New image operations: "alienify", "blur", "contrast", "edge_detect", "enboss", "equalize", "flip",
8
+ "gamma_correct", "mirror", "negate", "nosify", "rotate", "sharpen", "to_blob" inherited from
9
+ devil library see devil documentation at http://rdoc.info/github/banister/devil/master/Devil/Image
10
+
11
+ NOTE: imageruby-devil requires imageruby-bmp or imageruby-bmp-c gems in order to to work
12
+
13
+ == Installation
14
+
15
+ === Gem installation
16
+
17
+ sudo gem install imageruby-devil
18
+
19
+ == Usage
20
+
21
+ No explicit require is needed, examples
22
+
23
+ === Example 1: PNG
24
+
25
+ require "imageruby"
26
+
27
+ include ImageRuby
28
+
29
+ # create image (red gradient and random green)
30
+ image = Image.new(255,255) {|x,y| Color.from_rgb(x,rand(200),0) }
31
+
32
+ # save image on png format
33
+ image.save("image.png", :png)
34
+
35
+ === Example 2: Blur and mirror
36
+
37
+ require "imageruby"
38
+
39
+ include ImageRuby
40
+
41
+ # load image generated in the previous example
42
+ image = Image.from_file("image.png")
43
+
44
+ # apply blur effect
45
+ image = image.blur(10)
46
+
47
+ # mirror image
48
+ image = image.mirror
49
+
50
+ # save image on png format
51
+ image.save("image2.png", :png)
52
+
53
+
54
+ == Copying
55
+
56
+ Copyright (c) 2011 Dario Seminara, released under the GPL License (see LICENSE)
@@ -0,0 +1,10 @@
1
+ require "rubygems"
2
+ require "imageruby"
3
+
4
+ include ImageRuby
5
+
6
+ # create image (red gradient and random green)
7
+ image = Image.new(255,255) {|x,y| Color.from_rgb(x,rand(200),0) }
8
+
9
+ # save image on png format
10
+ image.save("image.png", :png)
@@ -0,0 +1,16 @@
1
+ require "rubygems"
2
+ require "imageruby"
3
+
4
+ include ImageRuby
5
+
6
+ # load image generated in the previous example
7
+ image = Image.from_file("image.png")
8
+
9
+ # apply blur effect
10
+ image = image.blur(10)
11
+
12
+ # mirror image
13
+ image = image.mirror
14
+
15
+ # save image on png format
16
+ image.save("image2.png", :png)
@@ -0,0 +1,51 @@
1
+ =begin
2
+
3
+ This file is part of the imageruby-devil project, http://github.com/tario/imageruby-devil
4
+
5
+ Copyright (c) 2010 Roberto Dario Seminara <robertodarioseminara@gmail.com>
6
+
7
+ imageruby-devil is free software: you can redistribute it and/or modify
8
+ it under the terms of the gnu general public license as published by
9
+ the free software foundation, either version 3 of the license, or
10
+ (at your option) any later version.
11
+
12
+ imageruby-devil is distributed in the hope that it will be useful,
13
+ but without any warranty; without even the implied warranty of
14
+ merchantability or fitness for a particular purpose. see the
15
+ gnu general public license for more details.
16
+
17
+ you should have received a copy of the gnu general public license
18
+ along with imageruby-devil. if not, see <http://www.gnu.org/licenses/>.
19
+
20
+ =end
21
+ require "devil"
22
+ require "helper/tempfile"
23
+ require "imageruby"
24
+
25
+ module ImageRuby
26
+ class DevilFileLoader < ImageRuby::FileLoader
27
+
28
+ include TempFileMethods
29
+
30
+ def load(path)
31
+
32
+ if path.respond_to? :devil_path
33
+ raise UnableToLoadException
34
+ end
35
+
36
+ path2 = create_temp_path("img2") + ".bmp"
37
+
38
+ def path2.devil_path
39
+
40
+ end
41
+
42
+ use_temp_file(path2) do
43
+ Devil.with_image(path) do |img|
44
+ img.save(path2)
45
+ end
46
+
47
+ ImageRuby::FileLoader.load(path2)
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,56 @@
1
+ =begin
2
+
3
+ This file is part of the imageruby-devil project, http://github.com/tario/imageruby-devil
4
+
5
+ Copyright (c) 2010 Roberto Dario Seminara <robertodarioseminara@gmail.com>
6
+
7
+ imageruby-devil is free software: you can redistribute it and/or modify
8
+ it under the terms of the gnu general public license as published by
9
+ the free software foundation, either version 3 of the license, or
10
+ (at your option) any later version.
11
+
12
+ imageruby-devil is distributed in the hope that it will be useful,
13
+ but without any warranty; without even the implied warranty of
14
+ merchantability or fitness for a particular purpose. see the
15
+ gnu general public license for more details.
16
+
17
+ you should have received a copy of the gnu general public license
18
+ along with imageruby-devil. if not, see <http://www.gnu.org/licenses/>.
19
+
20
+ =end
21
+ require "devil"
22
+ require "helper/tempfile"
23
+ require "imageruby"
24
+
25
+ module ImageRuby
26
+ class DevilPersistor < FilePersistor
27
+
28
+ include TempFileMethods
29
+
30
+ def persist(image,path,format)
31
+
32
+ if path.respond_to? :devil_path
33
+ raise UnableToPersistException
34
+ end
35
+
36
+ tmppath = create_temp_path("img") + ".bmp"
37
+
38
+ def tmppath.devil_path
39
+ end
40
+
41
+ FilePersistor.persist(image,tmppath,:bmp)
42
+
43
+ use_temp_file(tmppath) do
44
+ begin
45
+ Devil.with_image(tmppath) do |img|
46
+ img.save(path)
47
+ end
48
+ rescue RuntimeError
49
+ raise UnableToEncodeException
50
+ end
51
+ end
52
+
53
+ nil
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,54 @@
1
+ =begin
2
+
3
+ This file is part of the imageruby-devil project, http://github.com/tario/imageruby-devil
4
+
5
+ Copyright (c) 2010 Roberto Dario Seminara <robertodarioseminara@gmail.com>
6
+
7
+ imageruby-devil is free software: you can redistribute it and/or modify
8
+ it under the terms of the gnu general public license as published by
9
+ the free software foundation, either version 3 of the license, or
10
+ (at your option) any later version.
11
+
12
+ imageruby-devil is distributed in the hope that it will be useful,
13
+ but without any warranty; without even the implied warranty of
14
+ merchantability or fitness for a particular purpose. see the
15
+ gnu general public license for more details.
16
+
17
+ you should have received a copy of the gnu general public license
18
+ along with imageruby-devil. if not, see <http://www.gnu.org/licenses/>.
19
+
20
+ =end
21
+ require "tempfile"
22
+
23
+ module TempFileMethods
24
+
25
+ def create_temp_file(basename, data)
26
+ tmpfile = Tempfile.new(basename)
27
+ ret = nil
28
+ begin
29
+ tmpfile.write data
30
+ tmpfile.close
31
+ ret = yield(tmpfile)
32
+ ensure
33
+ tmpfile.delete
34
+ end
35
+
36
+ ret
37
+ end
38
+
39
+ def use_temp_file(path)
40
+ begin
41
+ yield
42
+ ensure
43
+ File.delete(path)
44
+ end
45
+ end
46
+
47
+ def create_temp_path(basename)
48
+ tmpfile = Tempfile.new(basename)
49
+ tmppath = tmpfile.path
50
+ tmpfile.close
51
+ tmpfile.delete
52
+ tmppath
53
+ end
54
+ end
@@ -0,0 +1,25 @@
1
+ =begin
2
+
3
+ This file is part of the imageruby-devil project, http://github.com/tario/imageruby-devil
4
+
5
+ Copyright (c) 2010 Roberto Dario Seminara <robertodarioseminara@gmail.com>
6
+
7
+ imageruby-devil is free software: you can redistribute it and/or modify
8
+ it under the terms of the gnu general public license as published by
9
+ the free software foundation, either version 3 of the license, or
10
+ (at your option) any later version.
11
+
12
+ imageruby-devil is distributed in the hope that it will be useful,
13
+ but without any warranty; without even the implied warranty of
14
+ merchantability or fitness for a particular purpose. see the
15
+ gnu general public license for more details.
16
+
17
+ you should have received a copy of the gnu general public license
18
+ along with imageruby-devil. if not, see <http://www.gnu.org/licenses/>.
19
+
20
+ =end
21
+ require "rubygems"
22
+ require "devil_persistor/devil_persistor"
23
+ require "devil_persistor/devil_loader"
24
+ require "imageruby-devil/devil_mixin"
25
+
@@ -0,0 +1,90 @@
1
+ =begin
2
+
3
+ This file is part of the imageruby-devil project, http://github.com/tario/imageruby-devil
4
+
5
+ Copyright (c) 2010 Roberto Dario Seminara <robertodarioseminara@gmail.com>
6
+
7
+ imageruby-devil is free software: you can redistribute it and/or modify
8
+ it under the terms of the gnu general public license as published by
9
+ the free software foundation, either version 3 of the license, or
10
+ (at your option) any later version.
11
+
12
+ imageruby-devil is distributed in the hope that it will be useful,
13
+ but without any warranty; without even the implied warranty of
14
+ merchantability or fitness for a particular purpose. see the
15
+ gnu general public license for more details.
16
+
17
+ you should have received a copy of the gnu general public license
18
+ along with imageruby-devil. if not, see <http://www.gnu.org/licenses/>.
19
+
20
+ =end
21
+ require "devil"
22
+ require "helper/tempfile"
23
+
24
+ module ImageRuby
25
+
26
+ module ImageRubyDevilMixin
27
+
28
+ class << self
29
+ include TempFileMethods
30
+ end
31
+ include TempFileMethods
32
+
33
+ def self.tmppath
34
+ tmpfile = Tempfile.new("img")
35
+ path = tmpfile.path
36
+ tmpfile.close
37
+
38
+ path
39
+ end
40
+
41
+ def self.from_devil(devil_image)
42
+ path = ImageRubyDevilMixin.tmppath+".bmp"
43
+
44
+ use_temp_file(path) do
45
+ devil_image.save(path)
46
+ Image.from_file(path)
47
+ end
48
+ end
49
+
50
+ def to_devil
51
+ path = ImageRubyDevilMixin.tmppath+".bmp"
52
+ save(path,:bmp)
53
+
54
+ use_temp_file(path) do
55
+ if block_given?
56
+ Devil.with_image(path) do |devil_image|
57
+ yield(devil_image)
58
+ end
59
+ else
60
+ Devil.load_image(path)
61
+ end
62
+ end
63
+ end
64
+
65
+ def devil
66
+
67
+ img = nil
68
+
69
+ self.to_devil do |devil_image|
70
+ yield(devil_image)
71
+ img = ImageRubyDevilMixin.from_devil(devil_image)
72
+ end
73
+
74
+ img
75
+ end
76
+
77
+ # devil methods
78
+ ["alienify", "blur", "contrast", "edge_detect", "enboss", "equalize", "flip",
79
+ "gamma_correct", "mirror", "negate", "nosify", "rotate", "sharpen", "to_blob"].each do |m|
80
+ define_method m do |*args|
81
+ devil do |devil_image|
82
+ devil_image.send(m,*args)
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ register_image_mixin ImageRubyDevilMixin
89
+
90
+ end
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: imageruby-devil
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Dario Seminara
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-14 00:00:00 -03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: devil
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 105
30
+ segments:
31
+ - 0
32
+ - 1
33
+ - 9
34
+ - 5
35
+ version: 0.1.9.5
36
+ type: :runtime
37
+ version_requirements: *id001
38
+ description:
39
+ email: robertodarioseminara@gmail.com
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files:
45
+ - README
46
+ files:
47
+ - lib/imageruby-devil/devil_mixin.rb
48
+ - lib/helper/tempfile.rb
49
+ - lib/devil_persistor/devil_persistor.rb
50
+ - lib/devil_persistor/devil_loader.rb
51
+ - lib/imageruby-devil.rb
52
+ - examples/example1.rb
53
+ - examples/example2.rb
54
+ - README
55
+ has_rdoc: true
56
+ homepage: http://github.com/tario/imageruby-devil
57
+ licenses: []
58
+
59
+ post_install_message:
60
+ rdoc_options: []
61
+
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ hash: 3
70
+ segments:
71
+ - 0
72
+ version: "0"
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ requirements: []
83
+
84
+ rubyforge_project:
85
+ rubygems_version: 1.3.7
86
+ signing_key:
87
+ specification_version: 3
88
+ summary: Bridge between ImageRuby and Devil image library
89
+ test_files: []
90
+