Developer Documentation
PATH  Mac OS X Documentation > Application Kit Reference: Java


[Previous] [Class List] [Next]

NSBitmapImageRep


Inherits from: NSImageRep : NSObject
Package: com.apple.yellow.application


Class Description


An NSBitmapImageRep is an object that can render an image from bitmap data. The data can be in Tag Image File Format (TIFF), Windows bitmap format (BMP), or it can be raw image data. If it's raw data, the object must be informed about the structure of the image-its size, the number of color components, the number of bits per sample, and so on-when it's first initialized. If it's TIFF or BMP data, the object can get this information from the various fields included with the data.

Although NSBitmapImageReps are often used indirectly, through instances of the NSImage class, they can also be used directly-for example to manipulate the bits of an image as you might need to do in a paint program.

Setting Up an NSBitmapImageRep

You pass bitmap data for an image to a new NSBitmapImageRep when you first initialize it. You can also create an NSBitmapImageRep from bitmap data that's read from a specified rectangle of a focused NSView.

Although the NSBitmapImageRep class inherits NSImageRep methods that set image attributes, these methods shouldn't be used. Instead, you should either allow the object to find out about the image from the fields included with the bitmap data, or use methods defined in this class to supply this information when the object is initialized.

TIFF Compression

TIFF data can be read and rendered after it has been compressed using any one of the four schemes briefly described below:


LZW Compresses and decompresses without information loss, achieving compression ratios up to 5:1. It may be somewhat slower to compress and decompress than the PackBits scheme.
PackBits Compresses and decompresses without information loss, but may not achieve the same compression ratios as LZW.
JPEG Compresses and decompresses with some information loss, but can achieve compression ratios anywhere from 10:1 to 100:1. The ratio is determined by a user-settable factor ranging from 1.0 to 255.0, with higher factors yielding greater compression. More information is lost with greater compression, but 15:1 compression is safe for publication quality. Some images can be compressed even more. JPEG compression can be used only for images that specify at least 4 bits per sample.
CCITTFAX Compresses and decompresses 1 bit gray-scale images using international fax compression standards CCITT3 and CCITT4.

An NSBitmapImageRep can also produce compressed TIFF data for its image using any of these schemes.


Method Types


Creating an NSBitmapImageRep
imageRepsWithData
imageRepWithData:
- initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:
- initWithBitmapHandle:
- initWithData:
- initWithFocusedViewRect:
- initWithIconHandle:
Getting information about the image
bitsPerPixel
bytesPerPlane
bytesPerRow
isPlanar
numberOfPlanes
samplesPerPixel
Getting image data
bitmapData
- getBitmapDataPlanes:
Producing a TIFF representation of the image
TIFFRepresentationOfImageReps
TIFFRepresentationOfImageRepsInArray:usingCompression:factor:
TIFFRepresentation
- TIFFRepresentationUsingCompression:factor:
Setting and checking compression types
localizedNameForTIFFCompressionType
- canBeCompressedUsing:
- getCompression:factor:
setCompressionWithFactor

Constructors


NSBitmapImageRep

public NSBitmapImageRep()

public NSBitmapImageRep(NSRect aNSRect)

public NSBitmapImageRep(NSData aNSData)

public NSBitmapImageRep(int anInt, int anInt, int anInt, int anInt, boolean aBoolean, boolean aBoolean, java.lang.String aString, int anInt, int anInt)

Static Methods



imageRep

public static NSBitmapImageRep imageRep(com.apple.yellow.foundation.NSData aNSData)



imageRepsWithData

public static NSArray imageRepsWithData(NSData bitmapData)

Creates and returns an array of initialized NSBitmapImageRep objects corresponding to the images in bitmapData. If NSBitmapImageRep is unable to interpret bitmapData, the returned array is empty. bitmapData can contain data in any supported bitmap format.

localizedNameForTIFFCompressionType

public static java.lang.String localizedNameForTIFFCompressionType(int anInt)



representationOfImageRepsInArray

public static com.apple.yellow.foundation.NSData representationOfImageRepsInArray(com.apple.yellow.foundation.NSArray aNSArray, int anInt, com.apple.yellow.foundation.NSDictionary aNSDictionary)



TIFFCompressionTypes

public static int[] TIFFCompressionTypes()



TIFFRepresentationOfImageReps

public static NSData TIFFRepresentationOfImageReps(NSArray aNSArray, int anInt, float aFloat)



TIFFRepresentationOfImageReps

public static NSData TIFFRepresentationOfImageReps(NSArray array)

Returns a TIFF representation of the images in array, using the compression returned by getCompression:factor: (if applicable).

If a problem is encountered during generation of the TIFF, TIFFRepresentationOfImageRepsInArray throws an exception.

See Also: TIFFRepresentation




Instance Methods



bitmapData

public byte[] bitmapData()

Returns a pointer to the bitmap data. If the data is planar, returns a pointer to the first plane.

See Also: - getBitmapDataPlanes:



bitmapDataPlanes

public byte[][] bitmapDataPlanes()



bitsPerPixel

public int bitsPerPixel()

Returns the number of bits allocated for each pixel in each plane of data. This is normally equal to the number of bits per sample or, if the data is in meshed configuration, the number of bits per sample times the number of samples per pixel. It can be explicitly set to another value (in the initWithBitmapDataPlanes:pixelsWide:pixelsHigh:... method) in case extra memory is allocated for each pixel. This may be the case, for example, if pixel data is aligned on byte boundaries.

bytesPerPlane

public int bytesPerPlane()

Returns the number of bytes in each plane or channel of data. This is calculated from the number of bytes per row and the height of the image.

See Also: bytesPerRow



bytesPerRow

public int bytesPerRow()

Returns the minimum number of bytes required to specify a scan line (a single row of pixels spanning the width of the image) in each data plane. If not explicitly set to another value (in the initWithBitmapDataPlanes:pixelsWide:pixelsHigh:... method), this will be figured from the width of the image, the number of bits per sample, and, if the data is in a meshed configuration, the number of samples per pixel. It can be set to another value to indicate that each row of data is aligned on word or other boundaries.

See Also: bytesPerPlane



canBeCompressedUsingType

public boolean canBeCompressedUsingType(int anInt)



colorizeByMappingGray

public void colorizeByMappingGray(float aFloat, NSColor aNSColor, NSColor aNSColor, NSColor aNSColor)



compressionFactor

public float compressionFactor()



compressionType

public int compressionType()



isPlanar

public boolean isPlanar()

Returns true if image data is segregated into a separate plane for each color and coverage component (planar configuration), and false if the data is integrated into a single plane (meshed configuration).

See Also: samplesPerPixel



numberOfPlanes

public int numberOfPlanes()

Returns the number of separate planes image data is organized into. This is the number of samples per pixel if the data has a separate plane for each component (isPlanar returns true) and 1 if the data is meshed (isPlanar returns false).

See Also: samplesPerPixel, - hasAlpha (NSImageRep) - bitsPerSample (NSImageRep)



representationUsingType

public NSData representationUsingType(int anInt, NSDictionary aNSDictionary)



samplesPerPixel

public int samplesPerPixel()

Returns the number of components in the data. It includes both color components and the coverage component, if present.

See Also: - hasAlpha (NSImageRep) - bitsPerSample (NSImageRep)



setBitmapData

public void setBitmapData(byte[] aByte[])



setBitmapDataPlanes

public void setBitmapDataPlanes(byte[][] aByte[][])



setCompressionWithFactor

public void setCompressionWithFactor(int compression, float factor)

Sets the receiver's compression type and compression factor. compression identifies one of the supported compression types.factor is a value specific to the compression type; many types of compression don't support varying degrees of compression, and thus ignore factor. JPEG compression allows a compression factor ranging from 0.0 to 255.0, with 0.0 representing minimal compression.

When an NSBitmapImageRep is created, the instance stores the compression type and factor for the source data. TIFFRepresentation and TIFFRepresentationOfImageRepsInArray: (class method) try to use the stored compression type and factor. Use this method to change the compression type and factor.

See Also: - canBeCompressedUsing:



setProperty

public void setProperty(java.lang.String aString, java.lang.Object anObject)



TIFFRepresentation

public NSData TIFFRepresentation()

Returns a TIFF representation of the image, using the compression that's returned by getCompression:factor: (if applicable). This method invokes TIFFRepresentationUsingCompression:factor: using the stored compression type and factor retrieved from the initial image data or changed using setCompression:factor:. If the stored compression type isn't supported for writing TIFF data (for example, NSTIFFCompressionNEXT), the stored compression is changed to NSTIFFCompressionNone and the compression factor to 0.0 before invoking TIFFRepresentationUsingCompression:factor:.

If a problem is encountered during generation of the TIFF, TIFFRepresentation throws an exception.

See Also: TIFFRepresentationOfImageReps



TIFFRepresentation

public com.apple.yellow.foundation.NSData TIFFRepresentation(int anInt, float aFloat)



valueForProperty

public java.lang.Object valueForProperty(java.lang.String aString)




[Previous] [Next]