image_paradise 0.1.12

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.

Potentially problematic release.


This version of image_paradise might be problematic. Click here for more details.

Files changed (115) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +38 -0
  3. data/README.md +179 -0
  4. data/USAGE.md +10 -0
  5. data/bin/black_white +10 -0
  6. data/bin/display_text_from_this_image +7 -0
  7. data/bin/image_paradise +7 -0
  8. data/bin/image_paradise_shell +7 -0
  9. data/bin/image_to_ascii +54 -0
  10. data/bin/image_to_pdf +7 -0
  11. data/bin/make_this_image_transparent +7 -0
  12. data/bin/rotate_left +7 -0
  13. data/bin/rotate_right +7 -0
  14. data/doc/README.gen +162 -0
  15. data/doc/TODO_FOR_THE_GTK_GUI.md +1 -0
  16. data/image_paradise.gemspec +50 -0
  17. data/lib/image_paradise.rb +5 -0
  18. data/lib/image_paradise/base/base.rb +91 -0
  19. data/lib/image_paradise/black_white.rb +89 -0
  20. data/lib/image_paradise/confree_generator/class.rb +614 -0
  21. data/lib/image_paradise/confree_generator/constants.rb +61 -0
  22. data/lib/image_paradise/confree_generator/gui/gtk_confree_generator.rb +752 -0
  23. data/lib/image_paradise/confree_generator/gui/insert_button.rb +78 -0
  24. data/lib/image_paradise/confree_generator/reset.rb +61 -0
  25. data/lib/image_paradise/confree_generator/shared/shared.rb +100 -0
  26. data/lib/image_paradise/constants.rb +43 -0
  27. data/lib/image_paradise/constants/image_file_types.rb +21 -0
  28. data/lib/image_paradise/create_animated_gif.rb +47 -0
  29. data/lib/image_paradise/crop/crop.rb +302 -0
  30. data/lib/image_paradise/gm_support.rb +34 -0
  31. data/lib/image_paradise/graphs.rb +36 -0
  32. data/lib/image_paradise/graphs/accumulator_bar.rb +29 -0
  33. data/lib/image_paradise/graphs/area.rb +64 -0
  34. data/lib/image_paradise/graphs/bar.rb +117 -0
  35. data/lib/image_paradise/graphs/bar_conversion.rb +53 -0
  36. data/lib/image_paradise/graphs/base.rb +1392 -0
  37. data/lib/image_paradise/graphs/bezier.rb +45 -0
  38. data/lib/image_paradise/graphs/bullet.rb +115 -0
  39. data/lib/image_paradise/graphs/deprecated.rb +42 -0
  40. data/lib/image_paradise/graphs/dot.rb +129 -0
  41. data/lib/image_paradise/graphs/line.rb +328 -0
  42. data/lib/image_paradise/graphs/mini/bar.rb +42 -0
  43. data/lib/image_paradise/graphs/mini/legend.rb +109 -0
  44. data/lib/image_paradise/graphs/mini/pie.rb +42 -0
  45. data/lib/image_paradise/graphs/mini/side_bar.rb +41 -0
  46. data/lib/image_paradise/graphs/net.rb +133 -0
  47. data/lib/image_paradise/graphs/photo_bar.rb +106 -0
  48. data/lib/image_paradise/graphs/pie.rb +139 -0
  49. data/lib/image_paradise/graphs/scatter.rb +264 -0
  50. data/lib/image_paradise/graphs/scene.rb +216 -0
  51. data/lib/image_paradise/graphs/side_bar.rb +144 -0
  52. data/lib/image_paradise/graphs/side_stacked_bar.rb +116 -0
  53. data/lib/image_paradise/graphs/spider.rb +163 -0
  54. data/lib/image_paradise/graphs/stacked_area.rb +73 -0
  55. data/lib/image_paradise/graphs/stacked_bar.rb +68 -0
  56. data/lib/image_paradise/graphs/stacked_mixin.rb +30 -0
  57. data/lib/image_paradise/graphs/themes.rb +117 -0
  58. data/lib/image_paradise/graphviz/README.md +2 -0
  59. data/lib/image_paradise/graphviz/generate_graphviz_image.rb +274 -0
  60. data/lib/image_paradise/gui/gtk/control_panel.rb +126 -0
  61. data/lib/image_paradise/identify.rb +145 -0
  62. data/lib/image_paradise/image_border.rb +231 -0
  63. data/lib/image_paradise/image_manipulations.rb +320 -0
  64. data/lib/image_paradise/image_paradise.rb +150 -0
  65. data/lib/image_paradise/image_to_ascii/image_to_ascii.rb +187 -0
  66. data/lib/image_paradise/image_to_pdf/image_to_pdf.rb +99 -0
  67. data/lib/image_paradise/label/README.md +2 -0
  68. data/lib/image_paradise/label/simple_label.rb +206 -0
  69. data/lib/image_paradise/optimizer.rb +483 -0
  70. data/lib/image_paradise/project/project.rb +29 -0
  71. data/lib/image_paradise/random_text_to_image.rb +363 -0
  72. data/lib/image_paradise/requires/common_base_requires.rb +17 -0
  73. data/lib/image_paradise/requires/require_colours.rb +9 -0
  74. data/lib/image_paradise/requires/require_gtk_components.rb +8 -0
  75. data/lib/image_paradise/requires/require_image_to_ascii.rb +7 -0
  76. data/lib/image_paradise/requires/require_the_image_paradise_project.rb +24 -0
  77. data/lib/image_paradise/requires/require_toplevel_methods.rb +21 -0
  78. data/lib/image_paradise/rotate/README.md +2 -0
  79. data/lib/image_paradise/rotate/rotate.rb +98 -0
  80. data/lib/image_paradise/shell/interactive.rb +156 -0
  81. data/lib/image_paradise/svg/README.md +5 -0
  82. data/lib/image_paradise/svg/circle.rb +106 -0
  83. data/lib/image_paradise/svg/feature.rb +48 -0
  84. data/lib/image_paradise/svg/rectangle.rb +154 -0
  85. data/lib/image_paradise/svg/svg.rb +102 -0
  86. data/lib/image_paradise/to_gif.rb +91 -0
  87. data/lib/image_paradise/to_jpg.rb +90 -0
  88. data/lib/image_paradise/toplevel_methods/add_black_border_to_this_image.rb +56 -0
  89. data/lib/image_paradise/toplevel_methods/crop.rb +28 -0
  90. data/lib/image_paradise/toplevel_methods/e.rb +16 -0
  91. data/lib/image_paradise/toplevel_methods/esystem.rb +19 -0
  92. data/lib/image_paradise/toplevel_methods/extract_text_from_this_image.rb +56 -0
  93. data/lib/image_paradise/toplevel_methods/file_related_code.rb +25 -0
  94. data/lib/image_paradise/toplevel_methods/flip_image_left_right.rb +32 -0
  95. data/lib/image_paradise/toplevel_methods/greyscale_this_image.rb +59 -0
  96. data/lib/image_paradise/toplevel_methods/help.rb +30 -0
  97. data/lib/image_paradise/toplevel_methods/make_this_image_transparent.rb +30 -0
  98. data/lib/image_paradise/toplevel_methods/menu.rb +92 -0
  99. data/lib/image_paradise/toplevel_methods/merge_these_images.rb +49 -0
  100. data/lib/image_paradise/toplevel_methods/mirror_image.rb +28 -0
  101. data/lib/image_paradise/toplevel_methods/misc.rb +31 -0
  102. data/lib/image_paradise/toplevel_methods/png_to_svg.rb +34 -0
  103. data/lib/image_paradise/toplevel_methods/roebe.rb +17 -0
  104. data/lib/image_paradise/toplevel_methods/to_png.rb +105 -0
  105. data/lib/image_paradise/toplevel_methods/wallpaper.rb +37 -0
  106. data/lib/image_paradise/toplevel_methods/write_this_text.rb +76 -0
  107. data/lib/image_paradise/version/version.rb +19 -0
  108. data/test/16x16_red_square_image_for_testing.png +0 -0
  109. data/test/testing_confree_generator.rb +8 -0
  110. data/test/testing_crop.rb +19 -0
  111. data/test/testing_image_magick_commands.rb +39 -0
  112. data/test/testing_image_paradise.rb +49 -0
  113. data/test/testing_the_svg_component.html +261 -0
  114. data/test/testing_the_svg_component.rb +106 -0
  115. 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