Class: GD2::Image::IndexedColor
- Inherits:
-
GD2::Image
- Object
- GD2::Image
- GD2::Image::IndexedColor
- Defined in:
- lib/gd2/image.rb
Overview
Description
IndexedColor images select pixel colors indirectly through a palette of up to 256 colors. Use Image#palette to access the associated Palette object.
Instance Attribute Summary
Attributes inherited from GD2::Image
Class Method Summary collapse
-
.create_image_sym ⇒ Object
:nodoc:.
-
.palette_class ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#alpha_blending=(bool) ⇒ Object
:nodoc:.
-
#alpha_blending? ⇒ Boolean
:nodoc:.
-
#color2pixel(color) ⇒ Object
:nodoc:.
-
#merge_from(other, dst_x, dst_y, src_x, src_y, w, h, pct, gray = false) ⇒ Object
Like Image#merge_from except an optional final argument can be specified to preserve the hue of the source by converting the destination pixels to grey scale before the merge.
-
#optimize_palette ⇒ Object
:nodoc:.
-
#pixel2color(pixel) ⇒ Object
:nodoc:.
-
#to_indexed_color(colors = MAX_COLORS, dither = true) ⇒ Object
:nodoc:.
-
#to_true_color ⇒ Object
:nodoc:.
Methods inherited from GD2::Image
#==, #[], #[]=, #aspect, #clipping, #clips?, #compare, #copy_from, #copy_from_rotated, create_image_ptr, #crop, #crop!, #draw, #dup, #each, #export, #gd, #gd2, #get_pixel, #gif, #height, import, #init_with_image, #init_with_size, #inspect, #interlaced=, #interlaced?, #jpeg, load, new, #png, #polar_transform, #polar_transform!, #resize, #resize!, #rotate, #rotate!, #save_alpha=, #save_alpha?, #set_pixel, #sharpen, #size, #transparent, #transparent=, #true_color?, #uncrop, #uncrop!, #wbmp, #width, #with_clipping
Class Method Details
.create_image_sym ⇒ Object
:nodoc:
710 711 712 |
# File 'lib/gd2/image.rb', line 710 def self.create_image_sym #:nodoc: :gdImageCreate end |
.palette_class ⇒ Object
:nodoc:
714 715 716 |
# File 'lib/gd2/image.rb', line 714 def self.palette_class #:nodoc: Palette::IndexedColor end |
Instance Method Details
#alpha_blending=(bool) ⇒ Object
:nodoc:
730 731 732 |
# File 'lib/gd2/image.rb', line 730 def alpha_blending=(bool) #:nodoc: raise 'Alpha blending mode not available for indexed color images' if bool end |
#alpha_blending? ⇒ Boolean
:nodoc:
726 727 728 |
# File 'lib/gd2/image.rb', line 726 def alpha_blending? #:nodoc: false end |
#color2pixel(color) ⇒ Object
:nodoc:
722 723 724 |
# File 'lib/gd2/image.rb', line 722 def color2pixel(color) #:nodoc: color.from_palette?(palette) ? color.index : palette.exact!(color).index end |
#merge_from(other, dst_x, dst_y, src_x, src_y, w, h, pct, gray = false) ⇒ Object
Like Image#merge_from except an optional final argument can be specified to preserve the hue of the source by converting the destination pixels to grey scale before the merge.
767 768 769 770 771 772 |
# File 'lib/gd2/image.rb', line 767 def merge_from(other, dst_x, dst_y, src_x, src_y, w, h, pct, gray = false) return super(other, dst_x, dst_y, src_x, src_y, w, h, pct) unless gray GD2FFI.send(:gdImageCopyMergeGray, image_ptr, other.image_ptr, dst_x.to_i, dst_y.to_i, src_x.to_i, src_y.to_i, w.to_i, h.to_i, pct.to_percent.round.to_i) self end |
#optimize_palette ⇒ Object
:nodoc:
734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 |
# File 'lib/gd2/image.rb', line 734 def optimize_palette #:nodoc: # first map duplicate colors to a single palette index map, cache = palette.inject([{}, Array.new(MAX_COLORS)]) do |ary, color| ary.at(0)[color.rgba] = color.index ary.at(1)[color.index] = color.rgba ary end each_with_index do |row, y| row.each_with_index do |pixel, x| set_pixel(x, y, map[cache.at(pixel)]) end end # now clean up the palette palette.deallocate_unused end |
#pixel2color(pixel) ⇒ Object
:nodoc:
718 719 720 |
# File 'lib/gd2/image.rb', line 718 def pixel2color(pixel) #:nodoc: palette[pixel] end |
#to_indexed_color(colors = MAX_COLORS, dither = true) ⇒ Object
:nodoc:
760 761 762 |
# File 'lib/gd2/image.rb', line 760 def to_indexed_color(colors = MAX_COLORS, dither = true) #:nodoc: palette.used <= colors ? self : super end |