examples/identify.rb in rmagick-2.13.4 vs examples/identify.rb in rmagick-2.14.0
- old
+ new
@@ -1,187 +1,185 @@
-require 'RMagick'
+require 'rmagick'
module Magick
- class Image
-
- # Print information similar to the identify -verbose command
- def identify
- printf "Image: "
- puts "#{base_filename}=>" if base_filename != filename
- puts filename + "\n"
- puts "\tFormat: #{format}\n"
- puts "\tGeometry: #{columns}x#{rows}\n"
- puts "\tClass: #{class_type.to_s}\n"
- puts "\tType: #{image_type.to_s}\n"
- puts "\tEndianess: #{endian}\n"
- puts "\tColorspace: #{colorspace}\n"
- puts "\tChannelDepth:\n"
- color_space = gray? ? Magick::GrayColorspace : colorspace
- case color_space
- when Magick::RGBColorspace
- puts "\t\tRed: #{channel_depth(Magick::RedChannel)}-bits\n"
- puts "\t\tGreen: #{channel_depth(Magick::GreenChannel)}-bits\n"
- puts "\t\tBlue: #{channel_depth(Magick::BlueChannel)}-bits\n"
- puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
- when Magick::CMYKColorspace
- puts "\t\tCyan : #{channel_depth(Magick::CyanChannel)}-bits\n"
- puts "\t\tMagenta: #{channel_depth(Magick::MagentaChannel)}-bits\n"
- puts "\t\tYellow: #{channel_depth(Magick::YellowChannel)}-bits\n"
- puts "\t\tBlack: #{channel_depth(Magick::BlackChannel)}-bits\n"
- puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
- when Magick::GrayColorspace
- puts "\t\tGray: #{channel_depth(Magick::GrayChannel)}-bits\n"
- puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
- end
- scale = Magick::QuantumRange / (Magick::QuantumRange >> (Magick::MAGICKCORE_QUANTUM_DEPTH-channel_depth))
- puts "\tChannel statistics:\n"
- case color_space
- when Magick::RGBColorspace
- puts "\t\tRed:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[0]/scale, channel_extrema(Magick::RedChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[1]/scale, channel_extrema(Magick::RedChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[0]/scale, channel_mean(Magick::RedChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[1]/scale, channel_mean(Magick::RedChannel)[1]/Magick::QuantumRange)
- puts "\t\tGreen:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[0]/scale, channel_extrema(Magick::GreenChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[1]/scale, channel_extrema(Magick::GreenChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[0]/scale, channel_mean(Magick::GreenChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[1]/scale, channel_mean(Magick::GreenChannel)[1]/Magick::QuantumRange)
- puts "\t\tBlue:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[0]/scale, channel_extrema(Magick::BlueChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[1]/scale, channel_extrema(Magick::BlueChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[0]/scale, channel_mean(Magick::BlueChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[1]/scale, channel_mean(Magick::BlueChannel)[1]/Magick::QuantumRange)
- when Magick::CMYKColorspace
- puts "\t\tCyan:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[0]/scale, channel_extrema(Magick::CyanChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[1]/scale, channel_extrema(Magick::CyanChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[0]/scale, channel_mean(Magick::CyanChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[1]/scale, channel_mean(Magick::CyanChannel)[1]/Magick::QuantumRange)
- puts "\t\tMagenta:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[0]/scale, channel_extrema(Magick::MagentaChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[1]/scale, channel_extrema(Magick::MagentaChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[0]/scale, channel_mean(Magick::MagentaChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[1]/scale, channel_mean(Magick::MagentaChannel)[1]/Magick::QuantumRange)
- puts "\t\tYellow:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[0]/scale, channel_extrema(Magick::YellowChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[1]/scale, channel_extrema(Magick::YellowChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[0]/scale, channel_mean(Magick::YellowChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[1]/scale, channel_mean(Magick::YellowChannel)[1]/Magick::QuantumRange)
- puts "\t\tBlack:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[0]/scale, channel_extrema(Magick::BlackChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[1]/scale, channel_extrema(Magick::BlackChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[0]/scale, channel_mean(Magick::BlackChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[1]/scale, channel_mean(Magick::BlackChannel)[1]/Magick::QuantumRange)
- when Magick::GrayColorspace
- puts "\t\tGray:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[0]/scale, channel_extrema(Magick::GrayChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[1]/scale, channel_extrema(Magick::GrayChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[0]/scale, channel_mean(Magick::GrayChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[1]/scale, channel_mean(Magick::GrayChannel)[1]/Magick::QuantumRange)
- end
- if matte
- puts "\t\tOpacity:\n"
- puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[0]/scale, channel_extrema(Magick::OpacityChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[1]/scale, channel_extrema(Magick::OpacityChannel)[1]/Magick::QuantumRange)
- puts "\t\t\tMean:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[0]/scale, channel_mean(Magick::OpacityChannel)[0]/Magick::QuantumRange)
- puts "\t\t\tStandard deviation:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[1]/scale, channel_mean(Magick::OpacityChannel)[1]/Magick::QuantumRange)
- end
- if class_type == Magick::DirectClass
- puts "\tColors: #{total_colors}\n"
- else
- if total_colors <= colors
- puts "\tColors: #{colors}\n"
- else
- puts "\tColors: #{total_colors}=>#{colors}\n"
- end
- end
- # Histogram goes here
- puts "\tMean error per pixel: #{mean_error_per_pixel}\n" if mean_error_per_pixel != 0.0
- puts "\tNormalized mean error: #{normalized_mean_error}\n" if normalized_mean_error != 0.0
- puts "\tNormalized maximum error: #{normalized_maximum_error}\n" if normalized_maximum_error != 0.0
- puts "\tRendering-intent: #{rendering_intent.to_s}\n"
- puts "\tGamma: #{gamma}\n" if gamma != 0.0
- chrom = chromaticity
- if chrom.red_primary.x != 0.0 || chrom.green_primary.x != 0.0 || chrom.blue_primary.x != 0.0 || chrom.white_point.x != 0.0
- puts "\tChromaticity:\n"
- puts "\t\tred primary: (#{sprintf("%g,%g", chrom.red_primary.x, chrom.red_primary.y)})\n"
- puts "\t\tgreen primary: (#{sprintf("%g,%g", chrom.green_primary.x, chrom.green_primary.y)})\n"
- puts "\t\tblue primary: (#{sprintf("%g,%g", chrom.blue_primary.x, chrom.blue_primary.y)})\n"
- puts "\t\twhite point: (#{sprintf("%g,%g", chrom.white_point.x, chrom.white_point.y)})\n"
- end
- ex_info = extract_info
- if ex_info.width * ex_info.height != 0.0
- puts "\tTile geometry: #{ex_info.width}x#{ex_info.height}+#{ex_info.x}+#{ex_info.y}\n"
- end
- if x_resolution != 0.0 && y_resolution != 0.0
- puts "\tResolution: #{sprintf("%gx%g", x_resolution, y_resolution)}\n"
- end
- puts "\tUnits: #{units.to_s}\n"
- size = filesize
- if size >= 1048576
- puts "\tFilesize: #{"%.1f" % (size/1048576.0)}mb\n"
- elsif size >= 1024
- puts "\tFilesize: #{"%.0f" % (size/1024.0)}kb\n"
- else
- puts "\tFilesize: #{size}b\n"
- end
- puts "\tInterlace: #{interlace.to_s}\n"
- puts "\tBackground Color: #{background_color}\n"
- puts "\tBorder Color: #{border_color}\n"
- puts "\tMatte Color: #{matte_color}\n"
- pg = page
- if pg.width != 0 || pg.height != 0 || pg.x != 0 || pg.y != 0
- puts "\tPage geometry: #{pg.width}x#{pg.height}+#{pg.x}+#{pg.y}\n"
- end
- puts "\tDispose: #{dispose.to_s}\n"
- puts "\tDelay: #{delay}\n" if delay != 0
- puts "\tIterations: #{iterations}\n" unless iterations == 1
- puts "\tScene: #{scene}\n" if scene != 0
- puts "\tCompression: #{compression.to_s}\n"
- puts "\tQuality: #{quality}\n" unless quality == 0
- puts "\tOrientation: #{orientation.to_s}\n"
- puts "\tMontage: #{montage}\n" if montage
- signature # compute but ignore - will be displayed along with the other properties
- properties.each do |prop, value|
- next if prop[0,1] == '['
- puts "\t#{prop}: #{value}\n"
- end
- clip_path = self["8BIM:1999,2998:#1"]
- if clip_path
- puts "\tClipping path: #{clip_path}\n"
- end
- each_profile do |name, value|
- puts "\tProfile-#{name}: #{value.length}\n"
- if name == 'exif'
- exif_attrs = get_exif_by_entry
- exif_attrs.each do |attr|
- puts "\t\t#{attr[0]}: #{attr[1]}\n"
- end
- end
- end
- puts "\tTainted: True\n" if changed?
- puts "\tTainted: False\n" unless changed?
- puts "\tVersion: #{Magick::Version}\n"
- puts "\t #{Magick::Magick_version}\n"
+ class Image
+ # Print information similar to the identify -verbose command
+ def identify
+ printf 'Image: '
+ puts "#{base_filename}=>" if base_filename != filename
+ puts filename + "\n"
+ puts "\tFormat: #{format}\n"
+ puts "\tGeometry: #{columns}x#{rows}\n"
+ puts "\tClass: #{class_type}\n"
+ puts "\tType: #{image_type}\n"
+ puts "\tEndianess: #{endian}\n"
+ puts "\tColorspace: #{colorspace}\n"
+ puts "\tChannelDepth:\n"
+ color_space = gray? ? Magick::GrayColorspace : colorspace
+ case color_space
+ when Magick::RGBColorspace
+ puts "\t\tRed: #{channel_depth(Magick::RedChannel)}-bits\n"
+ puts "\t\tGreen: #{channel_depth(Magick::GreenChannel)}-bits\n"
+ puts "\t\tBlue: #{channel_depth(Magick::BlueChannel)}-bits\n"
+ puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
+ when Magick::CMYKColorspace
+ puts "\t\tCyan : #{channel_depth(Magick::CyanChannel)}-bits\n"
+ puts "\t\tMagenta: #{channel_depth(Magick::MagentaChannel)}-bits\n"
+ puts "\t\tYellow: #{channel_depth(Magick::YellowChannel)}-bits\n"
+ puts "\t\tBlack: #{channel_depth(Magick::BlackChannel)}-bits\n"
+ puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
+ when Magick::GrayColorspace
+ puts "\t\tGray: #{channel_depth(Magick::GrayChannel)}-bits\n"
+ puts "\t\tOpacity: #{channel_depth(Magick::OpacityChannel)}-bits\n" if matte
+ end
+ scale = Magick::QuantumRange / (Magick::QuantumRange >> (Magick::MAGICKCORE_QUANTUM_DEPTH-channel_depth))
+ puts "\tChannel statistics:\n"
+ case color_space
+ when Magick::RGBColorspace
+ puts "\t\tRed:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[0]/scale, channel_extrema(Magick::RedChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::RedChannel)[1]/scale, channel_extrema(Magick::RedChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[0]/scale, channel_mean(Magick::RedChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::RedChannel)[1]/scale, channel_mean(Magick::RedChannel)[1]/Magick::QuantumRange)
+ puts "\t\tGreen:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[0]/scale, channel_extrema(Magick::GreenChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GreenChannel)[1]/scale, channel_extrema(Magick::GreenChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[0]/scale, channel_mean(Magick::GreenChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GreenChannel)[1]/scale, channel_mean(Magick::GreenChannel)[1]/Magick::QuantumRange)
+ puts "\t\tBlue:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[0]/scale, channel_extrema(Magick::BlueChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlueChannel)[1]/scale, channel_extrema(Magick::BlueChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[0]/scale, channel_mean(Magick::BlueChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlueChannel)[1]/scale, channel_mean(Magick::BlueChannel)[1]/Magick::QuantumRange)
+ when Magick::CMYKColorspace
+ puts "\t\tCyan:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[0]/scale, channel_extrema(Magick::CyanChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::CyanChannel)[1]/scale, channel_extrema(Magick::CyanChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[0]/scale, channel_mean(Magick::CyanChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::CyanChannel)[1]/scale, channel_mean(Magick::CyanChannel)[1]/Magick::QuantumRange)
+ puts "\t\tMagenta:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[0]/scale, channel_extrema(Magick::MagentaChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::MagentaChannel)[1]/scale, channel_extrema(Magick::MagentaChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[0]/scale, channel_mean(Magick::MagentaChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::MagentaChannel)[1]/scale, channel_mean(Magick::MagentaChannel)[1]/Magick::QuantumRange)
+ puts "\t\tYellow:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[0]/scale, channel_extrema(Magick::YellowChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::YellowChannel)[1]/scale, channel_extrema(Magick::YellowChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[0]/scale, channel_mean(Magick::YellowChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::YellowChannel)[1]/scale, channel_mean(Magick::YellowChannel)[1]/Magick::QuantumRange)
+ puts "\t\tBlack:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[0]/scale, channel_extrema(Magick::BlackChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::BlackChannel)[1]/scale, channel_extrema(Magick::BlackChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[0]/scale, channel_mean(Magick::BlackChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::BlackChannel)[1]/scale, channel_mean(Magick::BlackChannel)[1]/Magick::QuantumRange)
+ when Magick::GrayColorspace
+ puts "\t\tGray:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[0]/scale, channel_extrema(Magick::GrayChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::GrayChannel)[1]/scale, channel_extrema(Magick::GrayChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[0]/scale, channel_mean(Magick::GrayChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation: " + sprintf("%g (%g)\n", channel_mean(Magick::GrayChannel)[1]/scale, channel_mean(Magick::GrayChannel)[1]/Magick::QuantumRange)
+ end
+ if matte
+ puts "\t\tOpacity:\n"
+ puts "\t\t\tMin: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[0]/scale, channel_extrema(Magick::OpacityChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tMax: " + sprintf("%u (%g)\n", channel_extrema(Magick::OpacityChannel)[1]/scale, channel_extrema(Magick::OpacityChannel)[1]/Magick::QuantumRange)
+ puts "\t\t\tMean:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[0]/scale, channel_mean(Magick::OpacityChannel)[0]/Magick::QuantumRange)
+ puts "\t\t\tStandard deviation:" + sprintf("%u (%g)\n", channel_mean(Magick::OpacityChannel)[1]/scale, channel_mean(Magick::OpacityChannel)[1]/Magick::QuantumRange)
+ end
+ if class_type == Magick::DirectClass
+ puts "\tColors: #{total_colors}\n"
+ else
+ if total_colors <= colors
+ puts "\tColors: #{colors}\n"
+ else
+ puts "\tColors: #{total_colors}=>#{colors}\n"
end
+ end
+ # Histogram goes here
+ puts "\tMean error per pixel: #{mean_error_per_pixel}\n" if mean_error_per_pixel != 0.0
+ puts "\tNormalized mean error: #{normalized_mean_error}\n" if normalized_mean_error != 0.0
+ puts "\tNormalized maximum error: #{normalized_maximum_error}\n" if normalized_maximum_error != 0.0
+ puts "\tRendering-intent: #{rendering_intent}\n"
+ puts "\tGamma: #{gamma}\n" if gamma != 0.0
+ chrom = chromaticity
+ if chrom.red_primary.x != 0.0 || chrom.green_primary.x != 0.0 || chrom.blue_primary.x != 0.0 || chrom.white_point.x != 0.0
+ puts "\tChromaticity:\n"
+ puts "\t\tred primary: (#{sprintf('%g,%g', chrom.red_primary.x, chrom.red_primary.y)})\n"
+ puts "\t\tgreen primary: (#{sprintf('%g,%g', chrom.green_primary.x, chrom.green_primary.y)})\n"
+ puts "\t\tblue primary: (#{sprintf('%g,%g', chrom.blue_primary.x, chrom.blue_primary.y)})\n"
+ puts "\t\twhite point: (#{sprintf('%g,%g', chrom.white_point.x, chrom.white_point.y)})\n"
+ end
+ ex_info = extract_info
+ if ex_info.width * ex_info.height != 0.0
+ puts "\tTile geometry: #{ex_info.width}x#{ex_info.height}+#{ex_info.x}+#{ex_info.y}\n"
+ end
+ if x_resolution != 0.0 && y_resolution != 0.0
+ puts "\tResolution: #{sprintf('%gx%g', x_resolution, y_resolution)}\n"
+ end
+ puts "\tUnits: #{units}\n"
+ size = filesize
+ if size >= 1048576
+ puts "\tFilesize: #{'%.1f' % (size/1048576.0)}mb\n"
+ elsif size >= 1024
+ puts "\tFilesize: #{'%.0f' % (size/1024.0)}kb\n"
+ else
+ puts "\tFilesize: #{size}b\n"
+ end
+ puts "\tInterlace: #{interlace}\n"
+ puts "\tBackground Color: #{background_color}\n"
+ puts "\tBorder Color: #{border_color}\n"
+ puts "\tMatte Color: #{matte_color}\n"
+ pg = page
+ if pg.width != 0 || pg.height != 0 || pg.x != 0 || pg.y != 0
+ puts "\tPage geometry: #{pg.width}x#{pg.height}+#{pg.x}+#{pg.y}\n"
+ end
+ puts "\tDispose: #{dispose}\n"
+ puts "\tDelay: #{delay}\n" if delay != 0
+ puts "\tIterations: #{iterations}\n" unless iterations == 1
+ puts "\tScene: #{scene}\n" if scene != 0
+ puts "\tCompression: #{compression}\n"
+ puts "\tQuality: #{quality}\n" unless quality == 0
+ puts "\tOrientation: #{orientation}\n"
+ puts "\tMontage: #{montage}\n" if montage
+ signature # compute but ignore - will be displayed along with the other properties
+ properties.each do |prop, value|
+ next if prop[0,1] == '['
+ puts "\t#{prop}: #{value}\n"
+ end
+ clip_path = self['8BIM:1999,2998:#1']
+ if clip_path
+ puts "\tClipping path: #{clip_path}\n"
+ end
+ each_profile do |name, value|
+ puts "\tProfile-#{name}: #{value.length}\n"
+ if name == 'exif'
+ exif_attrs = get_exif_by_entry
+ exif_attrs.each do |attr|
+ puts "\t\t#{attr[0]}: #{attr[1]}\n"
+ end
+ end
+ end
+ puts "\tTainted: True\n" if changed?
+ puts "\tTainted: False\n" unless changed?
+ puts "\tVersion: #{Magick::Version}\n"
+ puts "\t #{Magick::Magick_version}\n"
end
+ end
end
if ARGV.length == 0
- puts <<-'END_USAGE'
+ puts <<-'END_USAGE'
This example displays information about the specified image file(s)
that is similar to ImageMagick/GraphicsMagick's identify command.
Usage:
ruby identify.rb filename [filename...]
END_USAGE
- exit
+ exit
end
ilist = Magick::ImageList.new(*ARGV)
ilist.each do |img|
- img.identify
+ img.identify
end
exit
-