image_paradise 0.1.12
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of image_paradise might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/LICENSE.md +38 -0
- data/README.md +179 -0
- data/USAGE.md +10 -0
- data/bin/black_white +10 -0
- data/bin/display_text_from_this_image +7 -0
- data/bin/image_paradise +7 -0
- data/bin/image_paradise_shell +7 -0
- data/bin/image_to_ascii +54 -0
- data/bin/image_to_pdf +7 -0
- data/bin/make_this_image_transparent +7 -0
- data/bin/rotate_left +7 -0
- data/bin/rotate_right +7 -0
- data/doc/README.gen +162 -0
- data/doc/TODO_FOR_THE_GTK_GUI.md +1 -0
- data/image_paradise.gemspec +50 -0
- data/lib/image_paradise.rb +5 -0
- data/lib/image_paradise/base/base.rb +91 -0
- data/lib/image_paradise/black_white.rb +89 -0
- data/lib/image_paradise/confree_generator/class.rb +614 -0
- data/lib/image_paradise/confree_generator/constants.rb +61 -0
- data/lib/image_paradise/confree_generator/gui/gtk_confree_generator.rb +752 -0
- data/lib/image_paradise/confree_generator/gui/insert_button.rb +78 -0
- data/lib/image_paradise/confree_generator/reset.rb +61 -0
- data/lib/image_paradise/confree_generator/shared/shared.rb +100 -0
- data/lib/image_paradise/constants.rb +43 -0
- data/lib/image_paradise/constants/image_file_types.rb +21 -0
- data/lib/image_paradise/create_animated_gif.rb +47 -0
- data/lib/image_paradise/crop/crop.rb +302 -0
- data/lib/image_paradise/gm_support.rb +34 -0
- data/lib/image_paradise/graphs.rb +36 -0
- data/lib/image_paradise/graphs/accumulator_bar.rb +29 -0
- data/lib/image_paradise/graphs/area.rb +64 -0
- data/lib/image_paradise/graphs/bar.rb +117 -0
- data/lib/image_paradise/graphs/bar_conversion.rb +53 -0
- data/lib/image_paradise/graphs/base.rb +1392 -0
- data/lib/image_paradise/graphs/bezier.rb +45 -0
- data/lib/image_paradise/graphs/bullet.rb +115 -0
- data/lib/image_paradise/graphs/deprecated.rb +42 -0
- data/lib/image_paradise/graphs/dot.rb +129 -0
- data/lib/image_paradise/graphs/line.rb +328 -0
- data/lib/image_paradise/graphs/mini/bar.rb +42 -0
- data/lib/image_paradise/graphs/mini/legend.rb +109 -0
- data/lib/image_paradise/graphs/mini/pie.rb +42 -0
- data/lib/image_paradise/graphs/mini/side_bar.rb +41 -0
- data/lib/image_paradise/graphs/net.rb +133 -0
- data/lib/image_paradise/graphs/photo_bar.rb +106 -0
- data/lib/image_paradise/graphs/pie.rb +139 -0
- data/lib/image_paradise/graphs/scatter.rb +264 -0
- data/lib/image_paradise/graphs/scene.rb +216 -0
- data/lib/image_paradise/graphs/side_bar.rb +144 -0
- data/lib/image_paradise/graphs/side_stacked_bar.rb +116 -0
- data/lib/image_paradise/graphs/spider.rb +163 -0
- data/lib/image_paradise/graphs/stacked_area.rb +73 -0
- data/lib/image_paradise/graphs/stacked_bar.rb +68 -0
- data/lib/image_paradise/graphs/stacked_mixin.rb +30 -0
- data/lib/image_paradise/graphs/themes.rb +117 -0
- data/lib/image_paradise/graphviz/README.md +2 -0
- data/lib/image_paradise/graphviz/generate_graphviz_image.rb +274 -0
- data/lib/image_paradise/gui/gtk/control_panel.rb +126 -0
- data/lib/image_paradise/identify.rb +145 -0
- data/lib/image_paradise/image_border.rb +231 -0
- data/lib/image_paradise/image_manipulations.rb +320 -0
- data/lib/image_paradise/image_paradise.rb +150 -0
- data/lib/image_paradise/image_to_ascii/image_to_ascii.rb +187 -0
- data/lib/image_paradise/image_to_pdf/image_to_pdf.rb +99 -0
- data/lib/image_paradise/label/README.md +2 -0
- data/lib/image_paradise/label/simple_label.rb +206 -0
- data/lib/image_paradise/optimizer.rb +483 -0
- data/lib/image_paradise/project/project.rb +29 -0
- data/lib/image_paradise/random_text_to_image.rb +363 -0
- data/lib/image_paradise/requires/common_base_requires.rb +17 -0
- data/lib/image_paradise/requires/require_colours.rb +9 -0
- data/lib/image_paradise/requires/require_gtk_components.rb +8 -0
- data/lib/image_paradise/requires/require_image_to_ascii.rb +7 -0
- data/lib/image_paradise/requires/require_the_image_paradise_project.rb +24 -0
- data/lib/image_paradise/requires/require_toplevel_methods.rb +21 -0
- data/lib/image_paradise/rotate/README.md +2 -0
- data/lib/image_paradise/rotate/rotate.rb +98 -0
- data/lib/image_paradise/shell/interactive.rb +156 -0
- data/lib/image_paradise/svg/README.md +5 -0
- data/lib/image_paradise/svg/circle.rb +106 -0
- data/lib/image_paradise/svg/feature.rb +48 -0
- data/lib/image_paradise/svg/rectangle.rb +154 -0
- data/lib/image_paradise/svg/svg.rb +102 -0
- data/lib/image_paradise/to_gif.rb +91 -0
- data/lib/image_paradise/to_jpg.rb +90 -0
- data/lib/image_paradise/toplevel_methods/add_black_border_to_this_image.rb +56 -0
- data/lib/image_paradise/toplevel_methods/crop.rb +28 -0
- data/lib/image_paradise/toplevel_methods/e.rb +16 -0
- data/lib/image_paradise/toplevel_methods/esystem.rb +19 -0
- data/lib/image_paradise/toplevel_methods/extract_text_from_this_image.rb +56 -0
- data/lib/image_paradise/toplevel_methods/file_related_code.rb +25 -0
- data/lib/image_paradise/toplevel_methods/flip_image_left_right.rb +32 -0
- data/lib/image_paradise/toplevel_methods/greyscale_this_image.rb +59 -0
- data/lib/image_paradise/toplevel_methods/help.rb +30 -0
- data/lib/image_paradise/toplevel_methods/make_this_image_transparent.rb +30 -0
- data/lib/image_paradise/toplevel_methods/menu.rb +92 -0
- data/lib/image_paradise/toplevel_methods/merge_these_images.rb +49 -0
- data/lib/image_paradise/toplevel_methods/mirror_image.rb +28 -0
- data/lib/image_paradise/toplevel_methods/misc.rb +31 -0
- data/lib/image_paradise/toplevel_methods/png_to_svg.rb +34 -0
- data/lib/image_paradise/toplevel_methods/roebe.rb +17 -0
- data/lib/image_paradise/toplevel_methods/to_png.rb +105 -0
- data/lib/image_paradise/toplevel_methods/wallpaper.rb +37 -0
- data/lib/image_paradise/toplevel_methods/write_this_text.rb +76 -0
- data/lib/image_paradise/version/version.rb +19 -0
- data/test/16x16_red_square_image_for_testing.png +0 -0
- data/test/testing_confree_generator.rb +8 -0
- data/test/testing_crop.rb +19 -0
- data/test/testing_image_magick_commands.rb +39 -0
- data/test/testing_image_paradise.rb +49 -0
- data/test/testing_the_svg_component.html +261 -0
- data/test/testing_the_svg_component.rb +106 -0
- metadata +217 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cc6e0fea2cf16f3e33ffc160b00a7948393ec93c3fdef26cd4072dc33cb41fee
|
4
|
+
data.tar.gz: 41c6bfef80f3d324db9c9fe26d7e076ac3406029c29a31287d6cbfd2f2e10622
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 40db871132c2848d0e30a2494bc50d3d6d2a5017c1523203586edcc6d4c1f53eeab9b3b051b0ac15ad5dc237cc2f271187746938fcb26a880556b76609ac6de4
|
7
|
+
data.tar.gz: 2d807e4ea173b4b1367d73efeba6248ad65a7f8518ee59e47fcf4d449f0f32573bc81f6e41277321dbf605a68d7d922a365cb53d536ffeda35d6931452850981
|
data/LICENSE.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
The code in the graphs/ subdirectory is based on the gem called gruff
|
2
|
+
and thus the MIT license (I kept the MIT license for that code since I
|
3
|
+
believe that this is only fair even though you could change the license
|
4
|
+
to require a similar GPL-distribution clause of your modifications,
|
5
|
+
since topfunky made it available for his gruff project via the MIT
|
6
|
+
license; for my own projects written from scratch I prefer the GPL-2.0
|
7
|
+
version though):
|
8
|
+
|
9
|
+
Copyright (c) 2005-2012 Topfunky Corporation boss@topfunky.com
|
10
|
+
Copyright (c) 2015 Robert A. Heiler
|
11
|
+
|
12
|
+
MIT License
|
13
|
+
|
14
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
15
|
+
a copy of this software and associated documentation files (the
|
16
|
+
"Software"), to deal in the Software without restriction, including
|
17
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
18
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
19
|
+
permit persons to whom the Software is furnished to do so, subject to
|
20
|
+
the following conditions:
|
21
|
+
|
22
|
+
The above copyright notice and this permission notice shall be
|
23
|
+
included in all copies or substantial portions of the Software.
|
24
|
+
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
26
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
27
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
28
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
29
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
30
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
31
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
32
|
+
|
33
|
+
------------------------------------------------------------------------
|
34
|
+
|
35
|
+
The rest of the code base in image_manipulation is GPL-2.0 and has been
|
36
|
+
written by me:
|
37
|
+
|
38
|
+
Copyright (c) 2014-2015 Robert A. Heiler
|
data/README.md
ADDED
@@ -0,0 +1,179 @@
|
|
1
|
+
[![forthebadge](http://forthebadge.com/images/badges/built-with-love.svg)](https://www.gobolinux.org/)
|
2
|
+
[![forthebadge](http://forthebadge.com/images/badges/made-with-ruby.svg)](https://www.ruby-lang.org/en/)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/image_paradise.svg)](https://badge.fury.io/rb/image_paradise)
|
4
|
+
|
5
|
+
## Flip-flopping an image from left-to-right
|
6
|
+
|
7
|
+
If you want to flip an image left-to-right, you can use
|
8
|
+
class <b>FlipImageLeftRight</b>. The file resides at
|
9
|
+
<b>image_paradise/toplevel_methods/flip_image_left_right.rb/</b>.
|
10
|
+
|
11
|
+
## Rotating an image
|
12
|
+
|
13
|
+
(Technically this is similar to flip-flop, but I added this functionality
|
14
|
+
at a later point, so the flip-flop subsection here shall remain for the
|
15
|
+
time being.)
|
16
|
+
|
17
|
+
The commandline API for rotating an image called **FOOBAR.png**, in
|
18
|
+
regards to image_paradise, may go so:
|
19
|
+
|
20
|
+
imgparadise FOOBAR.png --rotate=33%
|
21
|
+
imgparadise foo.png --rotate=90%
|
22
|
+
imgparadise *.png --rotate=90%
|
23
|
+
|
24
|
+
Simply pass the rotation-value that you wish to use into --rotate.
|
25
|
+
|
26
|
+
Be careful, though - this command will overwrite the image, so **make
|
27
|
+
sure to backup your old image** before applying this command.
|
28
|
+
|
29
|
+
## Transparent images
|
30
|
+
|
31
|
+
You can use this API to make an image transparent:
|
32
|
+
|
33
|
+
ImageParadise.make_this_image_transparent
|
34
|
+
|
35
|
+
This will try to make use of ImageMagick's **convert** ability.
|
36
|
+
|
37
|
+
## Merging image files together
|
38
|
+
|
39
|
+
You can use the toplevel method **ImageParadise.merge_these_images**
|
40
|
+
in order to merge several image files together. This depends on the
|
41
|
+
binary called **convert**, from ImageMagick.
|
42
|
+
|
43
|
+
As first argument simply pass an Array of the files that you wish
|
44
|
+
to merge, such as:
|
45
|
+
|
46
|
+
ImageParadise.merge_these_images(%w( foo.png bar.png bla.png ))
|
47
|
+
ImageParadise.merge(%w( foo.png bar.png bla.png )) # <- This also works.
|
48
|
+
|
49
|
+
## Greyscaling images
|
50
|
+
|
51
|
+
You can grayscale images via:
|
52
|
+
|
53
|
+
ImageParadise.greyscale_this_image()
|
54
|
+
ImageParadise.grayscale_this_image()
|
55
|
+
|
56
|
+
This currently (Jan 2019) depends on the gem called **mini_magick**. In
|
57
|
+
the future we may add some more flexibility to this method, but for the
|
58
|
+
time being mini_magick is a dependency if you wish to make use of
|
59
|
+
these **toplevel methods**.
|
60
|
+
|
61
|
+
Greyscaling an image may be useful if you wish to use this for
|
62
|
+
**optical character recognition**, aka recognising written text
|
63
|
+
on it.
|
64
|
+
|
65
|
+
## Borders
|
66
|
+
|
67
|
+
You can add some borders to images.
|
68
|
+
|
69
|
+
The toplevel method **ImageParadise.add_black_border_to_this_image()**
|
70
|
+
can be used to add a black border to an image. The first argument to
|
71
|
+
this method is the path to the image at hand. The second argument
|
72
|
+
specifies the size of the border, in **pixels**. So the number **3**
|
73
|
+
as second argument would mean draw a border 3 pixel wide around the
|
74
|
+
image at hand.
|
75
|
+
|
76
|
+
Invocation example for the file called **foobar.png**:
|
77
|
+
|
78
|
+
ImageParadise.add_black_border_to_this_image('foobar.png',3)
|
79
|
+
|
80
|
+
Obviously for this to work, the file must exist.
|
81
|
+
|
82
|
+
## class ImageParadiseImageToAscii
|
83
|
+
|
84
|
+
This class can convert images to ASCII files, if ImageMagick
|
85
|
+
(and the rmagick bindings) are available.
|
86
|
+
|
87
|
+
To specifically require this class, do this:
|
88
|
+
|
89
|
+
require 'image_paradise/requires/require_image_to_ascii.rb'
|
90
|
+
|
91
|
+
Then pass the filename into the class:
|
92
|
+
|
93
|
+
result = ImageParadise::ImageToAscii['foobar.jpg']
|
94
|
+
result = ImageParadise.image_to_ascii('foobar.jpg')
|
95
|
+
|
96
|
+
or
|
97
|
+
|
98
|
+
_ = ImageParadise::ImageToAscii.new '/foo/bar.png'
|
99
|
+
_.to_ascii # Generate the ascii "image" here specifically, via this method call.
|
100
|
+
|
101
|
+
or
|
102
|
+
|
103
|
+
print ImageParadise::ImageToAscii('yo.png').to_ascii(width: 50)
|
104
|
+
|
105
|
+
+--------------------------------------------------+
|
106
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
107
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
108
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
109
|
+
|oooooooooooooooooo===++++====ooooooooooooooooooooo|
|
110
|
+
|ooooooooooooo=+:~.~........~~~:+=ooooooooooooooooo|
|
111
|
+
|oooooooooo==:~...~~:++++++:~~..~~:+=oooooooooooooo|
|
112
|
+
|oooooooo=+:...~++====oooo====+:~..~:+=oooooooooooo|
|
113
|
+
|ooooooo=+~..~:++==ooooooooooo=++:~..~+=ooooooooooo|
|
114
|
+
|oooooo=+~.~:+=+~.~~~~~~~~:~~~.~:++:~.~+=oooooooooo|
|
115
|
+
|ooooo=+~~.+===~................~+==:.~~+=ooooooooo|
|
116
|
+
|ooooo=:~~:+=+:~................~~+=+:~.:=ooooooooo|
|
117
|
+
|ooooo=~.~+==+~.......XXXXX.......+==+~.:=ooooooooo|
|
118
|
+
|ooooo=~~~+==:~.......XXXXX.......:==+~.:=ooooooooo|
|
119
|
+
|ooooo=~~~:==+~.......XXXXX......~+==+~.~=ooooooooo|
|
120
|
+
|ooooo=:~~~+=++~.................:+=+~~~:=ooooooooo|
|
121
|
+
|ooooo=+:..~+==+~~...........~~~+==+~..:+=ooooooooo|
|
122
|
+
|ooooooo+:..~:+=o=+:........:+====:~.~:==oooooooooo|
|
123
|
+
|oooooooo=+~.~~:+==+~......~+==+:~..~:+oooooooooooo|
|
124
|
+
|ooooooooo=+:~..~~:~~.......~:~~..~:+oooooooooooooo|
|
125
|
+
|oooooooooooo=+~~..............~:+=oooooooooooooooo|
|
126
|
+
|ooooooooooooooo==++:~~~~~~:++==ooooooooooooooooooo|
|
127
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
128
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
129
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
130
|
+
+--------------------------------------------------+
|
131
|
+
|
132
|
+
Add colours via the "colour" option
|
133
|
+
|
134
|
+
require 'image_paradise'
|
135
|
+
a = ImageParadise::ImageToAscii.new "http://www.evangogh.org/images/paintings/self-portrait.jpg"
|
136
|
+
puts a.to_ascii(color: true)
|
137
|
+
|
138
|
+
Command Line examples:
|
139
|
+
|
140
|
+
image_to_ascii ~/Desktop/foo.png # Local file.
|
141
|
+
image_to_ascii http://www.google.com/images/foo.png # Remote image.
|
142
|
+
image_to_ascii -c -f html ~/foobar.jpg > ~/Desktop/ascii-as-html.html # Output via HTML.
|
143
|
+
image_to_ascii -w 50 -c -f html ~/foo/bar.jpg > ~/Desktop/saturdaynight.html # Or smaller.
|
144
|
+
|
145
|
+
To display help:
|
146
|
+
|
147
|
+
image_to_ascii -h
|
148
|
+
|
149
|
+
Usage: image_to_ascii [options] <path_or_url>
|
150
|
+
-w, --width WIDTH Width of the finished Ascii Image (Default: 150)
|
151
|
+
-f, --format [text/html] output format (Default: text)
|
152
|
+
-c, --color Switch to use colored terminal output (Default: false)
|
153
|
+
-i, --invert-chars Invert the character map. *Depending on background and image color - this can make the result clearer.*
|
154
|
+
-v, --version Show the version of this project
|
155
|
+
-h, --help Show this message
|
156
|
+
|
157
|
+
## SVG
|
158
|
+
|
159
|
+
ImageParadise now has a submodule called **Svg**, for svg-related
|
160
|
+
objects. Documentation is currently missing for this part. Hopefully
|
161
|
+
I will have more time in the future to add the missing
|
162
|
+
documentation here. :\
|
163
|
+
|
164
|
+
|
165
|
+
## Contact information
|
166
|
+
|
167
|
+
If your creative mind has ideas and specific suggestions to make this
|
168
|
+
gem more useful in general, feel free to drop me an email at any
|
169
|
+
time, via:
|
170
|
+
|
171
|
+
shevegen@gmail.com
|
172
|
+
|
173
|
+
(Do keep in mind that responding to emails may take some time, depending
|
174
|
+
on the amount of work I may have at that moment, due to reallife. I will,
|
175
|
+
however had, read feedback. Patches and code changes are welcome too
|
176
|
+
of course, as long as they are in the spirit of the project at
|
177
|
+
hand, e. g. fitting to the general theme.)
|
178
|
+
|
179
|
+
Thank you.
|
data/USAGE.md
ADDED
data/bin/black_white
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# This small executable will turn a coloured image into a black-white
|
6
|
+
# image, an operation that is more aptly called "grayscaling".
|
7
|
+
# =========================================================================== #
|
8
|
+
require 'image_paradise'
|
9
|
+
|
10
|
+
ImageParadise.black_white(ARGV)
|
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
require 'image_paradise/toplevel_methods/extract_text_from_this_image.rb'
|
6
|
+
|
7
|
+
puts ImageParadise.extract_text_from_this_image(ARGV, :default, :do_show_the_command)
|
data/bin/image_paradise
ADDED
data/bin/image_to_ascii
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# This is the executable for class ImageParadise::ImageToAscii.
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'image_paradise/requires/require_image_to_ascii.rb'
|
8
|
+
require 'optparse'
|
9
|
+
|
10
|
+
OPTIONS = {}
|
11
|
+
invert_chars = false
|
12
|
+
|
13
|
+
option_parser = OptionParser.new { |opts|
|
14
|
+
opts.banner = 'Usage: asciiart [options] <path_or_url>'
|
15
|
+
|
16
|
+
opts.on('-w', '--width WIDTH', 'Width of the finished Ascii Art (Default: 100)') { |width|
|
17
|
+
OPTIONS[:width] = width.to_i
|
18
|
+
}
|
19
|
+
opts.on('-f', '--format [text/html]', 'output format (Default: text)') { |format|
|
20
|
+
OPTIONS[:format] = format
|
21
|
+
}
|
22
|
+
opts.on('-c', '--color', 'Switch to use colored terminal output (Default: false)') {
|
23
|
+
OPTIONS[:color] = true
|
24
|
+
}
|
25
|
+
opts.on('-i', '--invert-chars', 'Invert the character map. Depending on your '\
|
26
|
+
'terminal and image this can make the image clearer (or a lot worse)') {
|
27
|
+
invert_chars = true
|
28
|
+
}
|
29
|
+
opts.on_tail('-v', '--version', 'Show AsciiArt version') {
|
30
|
+
puts 'AsciiArt version '+AsciiArt::VERSION
|
31
|
+
exit
|
32
|
+
}
|
33
|
+
opts.on_tail('-h', '--help', 'Show this message') {
|
34
|
+
puts opts
|
35
|
+
exit
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
begin
|
40
|
+
option_parser.parse!
|
41
|
+
rescue OptionParser::MissingArgument => e
|
42
|
+
puts "ERROR: #{e.message.capitalize}\n#{option_parser}"
|
43
|
+
exit
|
44
|
+
end
|
45
|
+
|
46
|
+
if ARGV.length == 0
|
47
|
+
puts "ERROR: You must specify a path or URL to convert\n#{option_parser}"
|
48
|
+
exit
|
49
|
+
end
|
50
|
+
|
51
|
+
_ = ImageParadise::ImageToAscii.new(ARGV.first)
|
52
|
+
_.image_chars = _.image_chars.reverse if invert_chars
|
53
|
+
|
54
|
+
puts _.to_ascii(OPTIONS)
|
data/bin/image_to_pdf
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
require 'image_paradise/class_methods/make_this_image_transparent.rb'
|
6
|
+
|
7
|
+
ImageParadise.make_this_image_transparent(ARGV)
|
data/bin/rotate_left
ADDED
data/bin/rotate_right
ADDED
data/doc/README.gen
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
ADD_RUBY_HEADER
|
2
|
+
|
3
|
+
## Flip-flopping an image from left-to-right
|
4
|
+
|
5
|
+
If you want to flip an image left-to-right, you can use
|
6
|
+
class <b>FlipImageLeftRight</b>. The file resides at
|
7
|
+
<b>image_paradise/toplevel_methods/flip_image_left_right.rb/</b>.
|
8
|
+
|
9
|
+
## Rotating an image
|
10
|
+
|
11
|
+
(Technically this is similar to flip-flop, but I added this functionality
|
12
|
+
at a later point, so the flip-flop subsection here shall remain for the
|
13
|
+
time being.)
|
14
|
+
|
15
|
+
The commandline API for rotating an image called **FOOBAR.png**, in
|
16
|
+
regards to image_paradise, may go so:
|
17
|
+
|
18
|
+
imgparadise FOOBAR.png --rotate=33%
|
19
|
+
imgparadise foo.png --rotate=90%
|
20
|
+
imgparadise *.png --rotate=90%
|
21
|
+
|
22
|
+
Simply pass the rotation-value that you wish to use into --rotate.
|
23
|
+
|
24
|
+
Be careful, though - this command will overwrite the image, so **make
|
25
|
+
sure to backup your old image** before applying this command.
|
26
|
+
|
27
|
+
## Transparent images
|
28
|
+
|
29
|
+
You can use this API to make an image transparent:
|
30
|
+
|
31
|
+
ImageParadise.make_this_image_transparent
|
32
|
+
|
33
|
+
This will try to make use of ImageMagick's **convert** ability.
|
34
|
+
|
35
|
+
## Merging image files together
|
36
|
+
|
37
|
+
You can use the toplevel method **ImageParadise.merge_these_images**
|
38
|
+
in order to merge several image files together. This depends on the
|
39
|
+
binary called **convert**, from ImageMagick.
|
40
|
+
|
41
|
+
As first argument simply pass an Array of the files that you wish
|
42
|
+
to merge, such as:
|
43
|
+
|
44
|
+
ImageParadise.merge_these_images(%w( foo.png bar.png bla.png ))
|
45
|
+
ImageParadise.merge(%w( foo.png bar.png bla.png )) # <- This also works.
|
46
|
+
|
47
|
+
## Greyscaling images
|
48
|
+
|
49
|
+
You can grayscale images via:
|
50
|
+
|
51
|
+
ImageParadise.greyscale_this_image()
|
52
|
+
ImageParadise.grayscale_this_image()
|
53
|
+
|
54
|
+
This currently (Jan 2019) depends on the gem called **mini_magick**. In
|
55
|
+
the future we may add some more flexibility to this method, but for the
|
56
|
+
time being mini_magick is a dependency if you wish to make use of
|
57
|
+
these **toplevel methods**.
|
58
|
+
|
59
|
+
Greyscaling an image may be useful if you wish to use this for
|
60
|
+
**optical character recognition**, aka recognising written text
|
61
|
+
on it.
|
62
|
+
|
63
|
+
## Borders
|
64
|
+
|
65
|
+
You can add some borders to images.
|
66
|
+
|
67
|
+
The toplevel method **ImageParadise.add_black_border_to_this_image()**
|
68
|
+
can be used to add a black border to an image. The first argument to
|
69
|
+
this method is the path to the image at hand. The second argument
|
70
|
+
specifies the size of the border, in **pixels**. So the number **3**
|
71
|
+
as second argument would mean draw a border 3 pixel wide around the
|
72
|
+
image at hand.
|
73
|
+
|
74
|
+
Invocation example for the file called **foobar.png**:
|
75
|
+
|
76
|
+
ImageParadise.add_black_border_to_this_image('foobar.png',3)
|
77
|
+
|
78
|
+
Obviously for this to work, the file must exist.
|
79
|
+
|
80
|
+
## class ImageParadiseImageToAscii
|
81
|
+
|
82
|
+
This class can convert images to ASCII files, if ImageMagick
|
83
|
+
(and the rmagick bindings) are available.
|
84
|
+
|
85
|
+
To specifically require this class, do this:
|
86
|
+
|
87
|
+
require 'image_paradise/requires/require_image_to_ascii.rb'
|
88
|
+
|
89
|
+
Then pass the filename into the class:
|
90
|
+
|
91
|
+
result = ImageParadise::ImageToAscii['foobar.jpg']
|
92
|
+
result = ImageParadise.image_to_ascii('foobar.jpg')
|
93
|
+
|
94
|
+
or
|
95
|
+
|
96
|
+
_ = ImageParadise::ImageToAscii.new '/foo/bar.png'
|
97
|
+
_.to_ascii # Generate the ascii "image" here specifically, via this method call.
|
98
|
+
|
99
|
+
or
|
100
|
+
|
101
|
+
print ImageParadise::ImageToAscii('yo.png').to_ascii(width: 50)
|
102
|
+
|
103
|
+
+--------------------------------------------------+
|
104
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
105
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
106
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
107
|
+
|oooooooooooooooooo===++++====ooooooooooooooooooooo|
|
108
|
+
|ooooooooooooo=+:~.~........~~~:+=ooooooooooooooooo|
|
109
|
+
|oooooooooo==:~...~~:++++++:~~..~~:+=oooooooooooooo|
|
110
|
+
|oooooooo=+:...~++====oooo====+:~..~:+=oooooooooooo|
|
111
|
+
|ooooooo=+~..~:++==ooooooooooo=++:~..~+=ooooooooooo|
|
112
|
+
|oooooo=+~.~:+=+~.~~~~~~~~:~~~.~:++:~.~+=oooooooooo|
|
113
|
+
|ooooo=+~~.+===~................~+==:.~~+=ooooooooo|
|
114
|
+
|ooooo=:~~:+=+:~................~~+=+:~.:=ooooooooo|
|
115
|
+
|ooooo=~.~+==+~.......XXXXX.......+==+~.:=ooooooooo|
|
116
|
+
|ooooo=~~~+==:~.......XXXXX.......:==+~.:=ooooooooo|
|
117
|
+
|ooooo=~~~:==+~.......XXXXX......~+==+~.~=ooooooooo|
|
118
|
+
|ooooo=:~~~+=++~.................:+=+~~~:=ooooooooo|
|
119
|
+
|ooooo=+:..~+==+~~...........~~~+==+~..:+=ooooooooo|
|
120
|
+
|ooooooo+:..~:+=o=+:........:+====:~.~:==oooooooooo|
|
121
|
+
|oooooooo=+~.~~:+==+~......~+==+:~..~:+oooooooooooo|
|
122
|
+
|ooooooooo=+:~..~~:~~.......~:~~..~:+oooooooooooooo|
|
123
|
+
|oooooooooooo=+~~..............~:+=oooooooooooooooo|
|
124
|
+
|ooooooooooooooo==++:~~~~~~:++==ooooooooooooooooooo|
|
125
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
126
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
127
|
+
|oooooooooooooooooooooooooooooooooooooooooooooooooo|
|
128
|
+
+--------------------------------------------------+
|
129
|
+
|
130
|
+
Add colours via the "colour" option
|
131
|
+
|
132
|
+
require 'image_paradise'
|
133
|
+
a = ImageParadise::ImageToAscii.new "http://www.evangogh.org/images/paintings/self-portrait.jpg"
|
134
|
+
puts a.to_ascii(color: true)
|
135
|
+
|
136
|
+
Command Line examples:
|
137
|
+
|
138
|
+
image_to_ascii ~/Desktop/foo.png # Local file.
|
139
|
+
image_to_ascii http://www.google.com/images/foo.png # Remote image.
|
140
|
+
image_to_ascii -c -f html ~/foobar.jpg > ~/Desktop/ascii-as-html.html # Output via HTML.
|
141
|
+
image_to_ascii -w 50 -c -f html ~/foo/bar.jpg > ~/Desktop/saturdaynight.html # Or smaller.
|
142
|
+
|
143
|
+
To display help:
|
144
|
+
|
145
|
+
image_to_ascii -h
|
146
|
+
|
147
|
+
Usage: image_to_ascii [options] <path_or_url>
|
148
|
+
-w, --width WIDTH Width of the finished Ascii Image (Default: 150)
|
149
|
+
-f, --format [text/html] output format (Default: text)
|
150
|
+
-c, --color Switch to use colored terminal output (Default: false)
|
151
|
+
-i, --invert-chars Invert the character map. *Depending on background and image color - this can make the result clearer.*
|
152
|
+
-v, --version Show the version of this project
|
153
|
+
-h, --help Show this message
|
154
|
+
|
155
|
+
## SVG
|
156
|
+
|
157
|
+
ImageParadise now has a submodule called **Svg**, for svg-related
|
158
|
+
objects. Documentation is currently missing for this part. Hopefully
|
159
|
+
I will have more time in the future to add the missing
|
160
|
+
documentation here. :\
|
161
|
+
|
162
|
+
ADD_CONTACT_INFORMATION
|