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.

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