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
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'image_paradise/toplevel_methods/file_related_code.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module ImageParadise
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === ImageParadise.remove_file
|
11
|
+
#
|
12
|
+
# We need a common way to delete files, so here it is.
|
13
|
+
# ========================================================================= #
|
14
|
+
def self.remove_file(i)
|
15
|
+
FileUtils.rm(i) if File.exist? i
|
16
|
+
end
|
17
|
+
|
18
|
+
# ========================================================================= #
|
19
|
+
# === remove_file
|
20
|
+
# ========================================================================= #
|
21
|
+
def remove_file(i)
|
22
|
+
::ImageParadise.remove_file(i)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'image_paradise/toplevel_methods/flip_image_left_right.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module ImageParadise
|
8
|
+
|
9
|
+
begin
|
10
|
+
require 'esystem'
|
11
|
+
rescue LoadError; end
|
12
|
+
|
13
|
+
# ========================================================================= #
|
14
|
+
# === ImageParadise.flip_image_left_right
|
15
|
+
# ========================================================================= #
|
16
|
+
def self.flip_image_left_right(this_image)
|
17
|
+
if this_image.is_a? Array
|
18
|
+
this_image.each {|entry|
|
19
|
+
flip_image_left_right(entry)
|
20
|
+
}
|
21
|
+
else
|
22
|
+
name_of_the_output_file = 'flipped_image_left_to_right_'+this_image
|
23
|
+
_ = 'convert '+this_image+' \( -flop \) +append '+name_of_the_output_file
|
24
|
+
Esystem.esystem _
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
if __FILE__ == $PROGRAM_NAME
|
31
|
+
ImageParadise.flip_image_left_right(ARGV)
|
32
|
+
end # flip_image_left_right
|
@@ -0,0 +1,59 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'image_paradise/toplevel_methods/grayscale_this_image.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'image_paradise/toplevel_methods/e.rb'
|
8
|
+
|
9
|
+
module ImageParadise
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === ImageParadise.greyscale_this_image
|
13
|
+
#
|
14
|
+
# This method will greyscale an image file. Right now we depend
|
15
|
+
# on the gem mini_magick for this task.
|
16
|
+
#
|
17
|
+
# This method may be useful when you wish to pre-process a coloured
|
18
|
+
# image, turn it into black-white only, before using OCR ("optical
|
19
|
+
# character recognition") on it.
|
20
|
+
# ========================================================================= #
|
21
|
+
def self.greyscale_this_image(
|
22
|
+
i, prepend_this_string = 'greyscaled_'
|
23
|
+
)
|
24
|
+
begin
|
25
|
+
require 'mini_magick'
|
26
|
+
i = [i].flatten.compact
|
27
|
+
i.each {|this_file|
|
28
|
+
img = MiniMagick::Image.open(this_file)
|
29
|
+
img.colorspace('Gray') # Turn it into grayscale here.
|
30
|
+
store_here = "#{prepend_this_string}#{this_file}"
|
31
|
+
e "Storing into the file `#{store_here}`."
|
32
|
+
img.write(store_here)
|
33
|
+
}
|
34
|
+
rescue LoadError
|
35
|
+
e 'This method requires the gem mini_magick.'
|
36
|
+
e
|
37
|
+
e 'You can install it via:'
|
38
|
+
e
|
39
|
+
e ' gem install mini_magick'
|
40
|
+
e
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# ========================================================================= #
|
45
|
+
# === ImageParadise.grayscale_this_image
|
46
|
+
#
|
47
|
+
# This is just for "support" of american english. The resulting image
|
48
|
+
# files will have a prepended string called 'grayscaled_' rather
|
49
|
+
# than 'greyscaled_'.
|
50
|
+
# ========================================================================= #
|
51
|
+
def self.grayscale_this_image(i)
|
52
|
+
ImageParadise.greyscale_this_image(i, 'grayscaled_')
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
if __FILE__ == $PROGRAM_NAME
|
58
|
+
ImageParadise.greyscale_this_image(ARGV)
|
59
|
+
end # greyscale_this_image
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'image_paradise/toplevel_methods/help.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module ImageParadise
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === ImageParadise.show_help (help tag)
|
11
|
+
#
|
12
|
+
# Invocation example:
|
13
|
+
#
|
14
|
+
# image_paradise --help
|
15
|
+
#
|
16
|
+
# ========================================================================= #
|
17
|
+
def self.show_help
|
18
|
+
heredoc_variable = <<-EOF
|
19
|
+
Right now we only support hese options:
|
20
|
+
|
21
|
+
--autogenerate-black-wallpaper
|
22
|
+
--wallpaper
|
23
|
+
--cfdg # batch-generate the cfdg files
|
24
|
+
--merge # merge together the given input image-files
|
25
|
+
|
26
|
+
EOF
|
27
|
+
e heredoc_variable
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'image_paradise/toplevel_methods/make_this_image_transparent.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'image_paradise/toplevel_methods/esystem.rb'
|
8
|
+
|
9
|
+
module ImageParadise
|
10
|
+
|
11
|
+
# ========================================================================= #
|
12
|
+
# === ImageParadise.make_this_image_transparent
|
13
|
+
#
|
14
|
+
# This method depends on the program called ImageMagick.
|
15
|
+
# ========================================================================= #
|
16
|
+
def self.make_this_image_transparent(i)
|
17
|
+
i = [i].flatten.compact
|
18
|
+
i.each {|this_image|
|
19
|
+
output_filename = "output_#{this_image}"
|
20
|
+
_ = 'convert '+this_image+' -transparent white '
|
21
|
+
_ << output_filename
|
22
|
+
esystem _
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
if __FILE__ == $PROGRAM_NAME
|
29
|
+
ImageParadise.make_this_image_transparent(ARGV)
|
30
|
+
end # make_this_image_transparent
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# This menu parses the commandline.
|
6
|
+
# =========================================================================== #
|
7
|
+
# require 'image_paradise/toplevel_methods/menu.rb'
|
8
|
+
# =========================================================================== #
|
9
|
+
module ImageParadise
|
10
|
+
|
11
|
+
require 'image_paradise/toplevel_methods/help.rb'
|
12
|
+
require 'image_paradise/toplevel_methods/wallpaper.rb'
|
13
|
+
|
14
|
+
# ========================================================================= #
|
15
|
+
# === @use_this_image
|
16
|
+
# ========================================================================= #
|
17
|
+
@use_this_image = nil
|
18
|
+
|
19
|
+
# ========================================================================= #
|
20
|
+
# === ImageParadise.use_this_image?
|
21
|
+
# ========================================================================= #
|
22
|
+
def self.use_this_image?
|
23
|
+
@use_this_image
|
24
|
+
end
|
25
|
+
|
26
|
+
# ========================================================================= #
|
27
|
+
# === ImageParadise.set_use_this_image
|
28
|
+
# ========================================================================= #
|
29
|
+
def self.set_use_this_image(i)
|
30
|
+
@use_this_image = i
|
31
|
+
end
|
32
|
+
|
33
|
+
# ========================================================================= #
|
34
|
+
# === ImageParadise.menu
|
35
|
+
# ========================================================================= #
|
36
|
+
def self.menu(i)
|
37
|
+
if i.is_a? Array
|
38
|
+
i.each {|entry| menu(entry) }
|
39
|
+
else
|
40
|
+
case i # case tag
|
41
|
+
# ===================================================================== #
|
42
|
+
# === imgparadise --cfdg
|
43
|
+
# ===================================================================== #
|
44
|
+
when /^-?-?cfdg$/
|
45
|
+
require 'image_paradise/confree_generator/class.rb'
|
46
|
+
::ImageParadise.confreegenerator('--html')
|
47
|
+
# ===================================================================== #
|
48
|
+
# === imgparadise FOOBAR.png --rotate=33%
|
49
|
+
# ===================================================================== #
|
50
|
+
when /-?-?rotate=(-?\d{1,2})%?$/i
|
51
|
+
rotate_by_n_percent = $1.to_s.dup
|
52
|
+
use_this_file = ''.dup
|
53
|
+
if ::ImageParadise.use_this_image?
|
54
|
+
use_this_file << ::ImageParadise.use_this_image?.dup
|
55
|
+
end
|
56
|
+
::ImageParadise.rotate_this_image(
|
57
|
+
use_this_file,
|
58
|
+
rotate_by_n_percent,
|
59
|
+
:black
|
60
|
+
)
|
61
|
+
# ===================================================================== #
|
62
|
+
# === image_paradise --help
|
63
|
+
# ===================================================================== #
|
64
|
+
when /help/i
|
65
|
+
show_help
|
66
|
+
# ===================================================================== #
|
67
|
+
# === image_paradise --autogenerate-black-wallpaper
|
68
|
+
#
|
69
|
+
# The variant here will allow us to us any colour for the wallpaper,
|
70
|
+
# whereas the variant below will create a default wallpaper.
|
71
|
+
# ===================================================================== #
|
72
|
+
when /^-?-?autogenerate-?(.+)-?wallpaper/
|
73
|
+
use_this_colour = $1.to_s.dup.delete('-')
|
74
|
+
::ImageParadise.wallpaper(colour: use_this_colour)
|
75
|
+
# ===================================================================== #
|
76
|
+
# === image_paradise --wallpaper
|
77
|
+
# ===================================================================== #
|
78
|
+
when /-?-?wallpaper?/
|
79
|
+
::ImageParadise.wallpaper
|
80
|
+
else
|
81
|
+
if File.exist? i
|
82
|
+
set_use_this_image(i)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
if __FILE__ == $PROGRAM_NAME
|
91
|
+
ImageParadise.menu(ARGV)
|
92
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'image_paradise/toplevel_methods/merge_these_images.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
require 'image_paradise/toplevel_methods/esystem.rb'
|
8
|
+
require 'image_paradise/toplevel_methods/e.rb'
|
9
|
+
|
10
|
+
module ImageParadise
|
11
|
+
|
12
|
+
# ========================================================================= #
|
13
|
+
# === ImageParadise.merge_these_images
|
14
|
+
#
|
15
|
+
# This method can be used to merge several input-image files together.
|
16
|
+
#
|
17
|
+
# This functionality depends on the project called ImageMagick.
|
18
|
+
# ========================================================================= #
|
19
|
+
def self.merge_these_images(
|
20
|
+
i, use_this_as_output_name = 'MERGED_IMAGES'
|
21
|
+
)
|
22
|
+
i = [i].flatten.compact
|
23
|
+
_ = 'convert '.dup
|
24
|
+
i.each {|this_image|
|
25
|
+
_ << "#{this_image} "
|
26
|
+
}
|
27
|
+
unless use_this_as_output_name.include? '.'
|
28
|
+
# ===================================================================== #
|
29
|
+
# In this case we assume that it has no proper end, such as
|
30
|
+
# .png or .jpg and so forth.
|
31
|
+
# ===================================================================== #
|
32
|
+
if use_this_as_output_name.frozen?
|
33
|
+
use_this_as_output_name = use_this_as_output_name.dup
|
34
|
+
end
|
35
|
+
use_this_as_output_name << File.extname(i.first)
|
36
|
+
end
|
37
|
+
_ << '+append '+use_this_as_output_name
|
38
|
+
esystem _
|
39
|
+
if File.exist? use_this_as_output_name
|
40
|
+
e "Stored as `#{use_this_as_output_name}`."
|
41
|
+
end
|
42
|
+
return use_this_as_output_name
|
43
|
+
end; self.instance_eval { alias merge merge_these_images } # === ImageParadise.merge
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
if __FILE__ == $PROGRAM_NAME
|
48
|
+
ImageParadise.merge_these_images(ARGV)
|
49
|
+
end # merge_these_images
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
require 'image_paradise/toplevel_methods/esystem.rb'
|
6
|
+
|
7
|
+
module ImageParadise
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === ImageParadise.mirror_image
|
11
|
+
# ========================================================================= #
|
12
|
+
def self.mirror_image(this_image)
|
13
|
+
if this_image.is_a? Array
|
14
|
+
this_image.each {|entry|
|
15
|
+
mirror_image(entry)
|
16
|
+
}
|
17
|
+
else
|
18
|
+
name_of_the_output_file = 'mirrored_image_'+this_image
|
19
|
+
_ = 'convert '+this_image+' \( -clone 0 -flop \) +append '+name_of_the_output_file
|
20
|
+
esystem _
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
if __FILE__ == $PROGRAM_NAME
|
27
|
+
ImageParadise.mirror_image(ARGV)
|
28
|
+
end # mirror_image
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'image_paradise/toplevel_methods/misc.rb'
|
6
|
+
# =========================================================================== #
|
7
|
+
module ImageParadise
|
8
|
+
|
9
|
+
# ========================================================================= #
|
10
|
+
# === @store_image_files_in_this_directory
|
11
|
+
# ========================================================================= #
|
12
|
+
@store_image_files_in_this_directory = nil
|
13
|
+
|
14
|
+
# ========================================================================= #
|
15
|
+
# === ImageParadise.store_image_files_in_this_directory=
|
16
|
+
# ========================================================================= #
|
17
|
+
def self.store_image_files_in_this_directory=(
|
18
|
+
i = '/home/x/DATA/IMG/STUDIUM/'
|
19
|
+
)
|
20
|
+
i << '/' unless i.end_with? '/' # Directories must have a trailing '/' token.
|
21
|
+
@store_image_files_in_this_directory = i
|
22
|
+
end
|
23
|
+
|
24
|
+
# ========================================================================= #
|
25
|
+
# === ImageParadise.store_image_files_in_this_directory?
|
26
|
+
# ========================================================================= #
|
27
|
+
def self.store_image_files_in_this_directory?
|
28
|
+
@store_image_files_in_this_directory
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
module ImageParadise # require 'image_paradise/png_to_svg.rb'
|
6
|
+
|
7
|
+
# ========================================================================== #
|
8
|
+
# === ImageParadise.png_to_svg
|
9
|
+
#
|
10
|
+
# Use this method to convert a .png file to a .svg file.
|
11
|
+
#
|
12
|
+
# This has several limitations since we use potrace for this.
|
13
|
+
#
|
14
|
+
# potrace can not work with .png files, only with .pnm files, so
|
15
|
+
# we first have to convert these files.
|
16
|
+
#
|
17
|
+
# The biggest limitation here is that it will remove all colours. :)
|
18
|
+
#
|
19
|
+
# Usage example:
|
20
|
+
#
|
21
|
+
# ImageParadise.png_to_svg 'COOKBOOKS_LOGO.png'
|
22
|
+
#
|
23
|
+
# ========================================================================== #
|
24
|
+
def self.png_to_svg(this_input_file)
|
25
|
+
pnm_file = this_input_file.gsub(/\.png$/,'')+'.pnm'
|
26
|
+
svg_file = this_input_file.gsub(/\.png$/,'')+'.svg'
|
27
|
+
_ = 'convert '+this_input_file+' '+pnm_file
|
28
|
+
Esystem.esystem _
|
29
|
+
_ = 'potrace '+pnm_file+' -s -o '+svg_file
|
30
|
+
Esystem.esystem _
|
31
|
+
return svg_file
|
32
|
+
end; self.instance_eval { alias convert_png_to_svg png_to_svg } # === Imageparadise.convert_png_to_svg
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# require 'image_paradise/toplevel_methods/roebe.rb'
|
6
|
+
# ImageParadise.is_on_roebe?
|
7
|
+
# =========================================================================== #
|
8
|
+
module ImageParadise
|
9
|
+
|
10
|
+
# ========================================================================= #
|
11
|
+
# === ImageParadise.is_on_roebe?
|
12
|
+
# ========================================================================= #
|
13
|
+
def self.is_on_roebe?
|
14
|
+
ENV['IS_ROEBE'].to_s == '1'
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# === ImageParadise::ToPng
|
6
|
+
#
|
7
|
+
# This class will simply convert an image file to .png.
|
8
|
+
#
|
9
|
+
# Usage example:
|
10
|
+
#
|
11
|
+
# ImageParadise::ToPng.new
|
12
|
+
#
|
13
|
+
# =========================================================================== #
|
14
|
+
# require 'image_paradise/toplevel_methods/to_png.rb'
|
15
|
+
# =========================================================================== #
|
16
|
+
require 'image_paradise/base/base.rb'
|
17
|
+
require 'image_paradise/optimizer.rb'
|
18
|
+
|
19
|
+
module ImageParadise
|
20
|
+
|
21
|
+
class ToPng < ::ImageParadise::Base # === ImageParadise::ToPng
|
22
|
+
|
23
|
+
# ========================================================================= #
|
24
|
+
# === initialize
|
25
|
+
# ========================================================================= #
|
26
|
+
def initialize(
|
27
|
+
i = nil,
|
28
|
+
run_already = true
|
29
|
+
)
|
30
|
+
reset
|
31
|
+
set_input(i)
|
32
|
+
run if run_already
|
33
|
+
end
|
34
|
+
|
35
|
+
# ========================================================================= #
|
36
|
+
# === reset (reset tag)
|
37
|
+
# ========================================================================= #
|
38
|
+
def reset
|
39
|
+
end
|
40
|
+
|
41
|
+
# ========================================================================= #
|
42
|
+
# === set_input
|
43
|
+
# ========================================================================= #
|
44
|
+
def set_input(i = '')
|
45
|
+
i = [i].flatten.compact
|
46
|
+
@input = i
|
47
|
+
end
|
48
|
+
|
49
|
+
# ========================================================================= #
|
50
|
+
# === store_where?
|
51
|
+
# ========================================================================= #
|
52
|
+
def store_where?(
|
53
|
+
i = @input
|
54
|
+
)
|
55
|
+
i.gsub(File.extname(i),'')+'.png'
|
56
|
+
end
|
57
|
+
|
58
|
+
# ========================================================================= #
|
59
|
+
# === run_everything
|
60
|
+
#
|
61
|
+
# This method contains the main logic of the file.
|
62
|
+
# ========================================================================= #
|
63
|
+
def run_everything
|
64
|
+
@input.each {|this_file|
|
65
|
+
store_where = store_where?(this_file)
|
66
|
+
opn; e 'Next converting '+simp(this_file)+' to '+sfile(store_where)
|
67
|
+
_ = 'convert '+this_file+' '+store_where
|
68
|
+
esystem _
|
69
|
+
if File.exist? store_where
|
70
|
+
opn; e 'We will next try to optimize '+sfile(store_where)
|
71
|
+
opn; e 'The old file size is: '+sfancy(File.size(store_where).to_s)
|
72
|
+
::ImageParadise::Optimizer[store_where]
|
73
|
+
opn; e 'The new file size is: '+sfancy(File.size(store_where).to_s)
|
74
|
+
end
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
# ========================================================================= #
|
79
|
+
# === input?
|
80
|
+
# ========================================================================= #
|
81
|
+
def input?
|
82
|
+
@input
|
83
|
+
end
|
84
|
+
|
85
|
+
# ========================================================================= #
|
86
|
+
# === run
|
87
|
+
# ========================================================================= #
|
88
|
+
def run # (run tag)
|
89
|
+
run_everything
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
# =========================================================================== #
|
95
|
+
# === ImageParadise.to_png
|
96
|
+
# =========================================================================== #
|
97
|
+
def self.to_png(i = ARGV)
|
98
|
+
ImageParadise::ToPng.new(i)
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
if __FILE__ == $PROGRAM_NAME
|
104
|
+
ImageParadise::ToPng.new(ARGV)
|
105
|
+
end # to_png
|