Class: ChunkyPNG::Image

### Home Classes Methods

### In Files

- lib/chunky_png/image.rb

### Parent

ChunkyPNG::Canvas

### Methods

- ::from_datastream
- ::new
- #initialize_copy
- #metadata_chunks
- #to_datastream

### Files

- BENCHMARKING.rdoc
- CHANGELOG.rdoc
- CONTRIBUTING.rdoc
- README.rdoc

### Class/Module Index

Quicksearch

- ChunkyPNG
- ChunkyPNG::CRCMismatch
- ChunkyPNG::Canvas
- ChunkyPNG::Canvas::Adam7Interlacing
- ChunkyPNG::Canvas::DataUrlExporting
- ChunkyPNG::Canvas::DataUrlImporting
- ChunkyPNG::Canvas::Drawing
- ChunkyPNG::Canvas::Masking
- ChunkyPNG::Canvas::Operations
- ChunkyPNG::Canvas::PNGDecoding
- ChunkyPNG::Canvas::PNGEncoding
- ChunkyPNG::Canvas::Resampling
- ChunkyPNG::Canvas::StreamExporting
- ChunkyPNG::Canvas::StreamImporting
- ChunkyPNG::Chunk
- ChunkyPNG::Chunk::Base
- ChunkyPNG::Chunk::CompressedText
- ChunkyPNG::Chunk::End
- ChunkyPNG::Chunk::Generic
- ChunkyPNG::Chunk::Header
- ChunkyPNG::Chunk::ImageData
- ChunkyPNG::Chunk::InternationalText
- ChunkyPNG::Chunk::Palette
- ChunkyPNG::Chunk::Text
- ChunkyPNG::Chunk::Transparency
- ChunkyPNG::Color
- ChunkyPNG::Datastream
- ChunkyPNG::Dimension
- ChunkyPNG::Exception
- ChunkyPNG::ExpectationFailed
- ChunkyPNG::Image
- ChunkyPNG::NotSupported
- ChunkyPNG::OutOfBounds
- ChunkyPNG::Palette
- ChunkyPNG::Point
- ChunkyPNG::RMagick
- ChunkyPNG::SignatureMismatch
- ChunkyPNG::Vector
- Enumerable
- String

No matching classes.

# ChunkyPNG::Image

ChunkyPNG::Image is an extension of the {ChunkyPNG::Canvas} class, that also includes support for metadata.

@see ChunkyPNG::Canvas

### Constants

METADATA_COMPRESSION_TRESHOLD

  The minimum size of bytes the value of a metadata field should be before compression is enabled for the chunk.

### Attributes

metadata[RW]

@return [Hash] The hash of metadata fields for this PNG image.

### Public Class Methods

from_datastream(ds) click to toggle source

Reads a ChunkyPNG::Image instance from a data stream.

Besides decoding the canvas, this will also read the metadata fields from the datastream.

@param [ChunkyPNG::Datastream] The datastream to read from.

    # File lib/chunky_png/image.rb, line 73
    def self.from_datastream(ds)
      image = super(ds)
      image.metadata = ds.metadata
      return image
    end

new(width, height, bg_color = ChunkyPNG::Color::TRANSPARENT, metadata = {}) click to toggle source

Initializes a new ChunkyPNG::Image instance. @param [Integer] width The width of the new image. @param [Integer] height The height of the new image. @param [Integer] bg_color The background color of the new image. @param [Hash] metadata A hash of metadata fields and values for this image. @see ChunkyPNG::Canvas#initialize

    # File lib/chunky_png/image.rb, line 22
    def initialize(width, height, bg_color = ChunkyPNG::Color::TRANSPARENT, metadata = {})
      super(width, height, bg_color)
      @metadata = metadata
    end

### Public Instance Methods

initialize_copy(other) click to toggle source

Initializes a copy of another ChunkyPNG::Image instance.

@param [ChunkyPNG::Image] other The other image to copy.

    # File lib/chunky_png/image.rb, line 30
    def initialize_copy(other)
      super(other)
      @metadata = other.metadata
    end

metadata_chunks() click to toggle source

Returns the metadata for this image as PNG chunks.

Chunks will either be of the {ChunkyPNG::Chunk::Text} type for small values (in bytes), or of the {ChunkyPNG::Chunk::CompressedText} type for values that are larger in size.

@return [Array<ChunkyPNG::Chunk>] An array of metadata chunks. @see ChunkyPNG::Image::METADATA_COMPRESSION_TRESHOLD

    # File lib/chunky_png/image.rb, line 43
    def metadata_chunks
      metadata.map do |key, value|
        if value.length >= METADATA_COMPRESSION_TRESHOLD
          ChunkyPNG::Chunk::CompressedText.new(key, value)
        else
          ChunkyPNG::Chunk::Text.new(key, value)
        end
      end
    end

to_datastream(constraints = {}) click to toggle source

Encodes the image to a PNG datastream for saving to disk or writing to an IO stream.

Besides encoding the canvas, it will also encode the metadata fields to text chunks.

@param [Hash] constraints The constraints to use when encoding the canvas. @return [ChunkyPNG::Datastream] The datastream that contains this image. @see ChunkyPNG::Canvas::PNGEncoding#to_datastream @see metadata_chunks

    # File lib/chunky_png/image.rb, line 61
    def to_datastream(constraints = {})
      ds = super(constraints)
      ds.other_chunks += metadata_chunks
      return ds
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.