- Inherits from:
- NSImageRep : NSObject
- Package:
- com.apple.yellow.application
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.
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 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.
The following constants are provided as a convenience by NSBitmapImageRep:
Constant | Type | Description |
BMPFileType |
int | 1 |
GIFFileType |
int | 2 |
ImageColorSyncProfileData |
String | TIFF input/output (NSData) |
ImageCompressionFactor |
String | TIFF/JPEG input/output (float in Number) |
ImageCompressionMethod |
String | TIFF input/output (NSTIFFCompression in Number) |
ImageDitherTransparency |
String | GIF output |
ImageInterlaced |
String | PNG output |
ImageRGBColorTable |
String | GIF input/output (packed RGB in NSData) |
JPEGFileType |
int | 3 |
PNGFileType |
int | 4 |
TIFFFileType |
int | 0 |
The following compression types are supported by NSBitmapImageRep:
Constant | Value | Description |
TIFFCompressionNone |
1 | |
TIFFCompressionCCITTFAX3 |
3 | 1 bps images only |
TIFFCompressionCCITTFAX4 |
4 | 1 bps images only |
TIFFCompressionLZW |
5 | |
TIFFCompressionJPEG |
6 | |
TIFFCompressionNEXT |
32766 | Input only |
TIFFCompressionPackBits |
32773 | |
TIFFCompressionOldJPEG |
32865 | Input only |
- Constructors
- NSBitmapImageRep
- Creating an NSBitmapImageRep
- imageRep
- imageRepsWithData
- colorizeByMappingGray
- Getting information about the image
- bitsPerPixel
- bytesPerPlane
- bytesPerRow
- compressionFactor
- compressionType
- isPlanar
- numberOfPlanes
- samplesPerPixel
- Getting image data
- bitmapData
- Producing a TIFF representation of the image
- TIFFRepresentationOfImageReps
- TIFFRepresentation
- representationOfImageRepsInArray
- representationUsingType
- Setting and checking compression types
- localizedNameForTIFFCompressionType
- canBeCompressedUsingType
- setCompressionWithFactor
- setProperty
- valueForProperty
public NSBitmapImageRep()
public NSBitmapImageRep(NSRect rect)
This method uses imaging operators to read the image data into a buffer; the object is then created from that data. The object is initialized with information about the image obtained from the Window Server.
If
for any reason the new object can't be initialized, this method
returns null
. Otherwise, it returns this.
public NSBitmapImageRep(NSData bitmapData)
This
method returns an initialized NSBitmapImageRep if the initialization
was successful, or null
if it was
unable to interpret the contents of bitmapData.
public NSBitmapImageRep(
int width,
int height,
int bps,
int spp,
boolean alpha,
boolean isPlanar,
String colorNameSpace,
int rowBytes,
int pixelBits)
CalibratedWhiteColorSpace
CalibratedBlackColorSpace
CalibratedRGBColorSpace
DeviceWhiteColorSpace
DeviceBlackColorSpace
DeviceRGBColorSpace
DeviceCMYKColorSpace
NamedColorSpace
CustomColorSpace
public static NSBitmapImageRep imageRep(NSData bitmapData)
null
if NSBitmapImageRep is unable
to interpret bitmapData. bitmapData can contain
data in any supported bitmap format.public static NSArray imageRepsWithData(NSData bitmapData)
public static String localizedNameForTIFFCompressionType(int compression)
null
if compression is
unrecognized. Compression types are listed in "Constants" .
When implementing a user interface for selecting TIFF compression
types, use TIFFCompressionTypes to
get the list of supported compression types, then use this method
to get the localized names for each compression type.See Also: TIFFCompressionTypes
public static NSData representationOfImageRepsInArray(
NSArray imageReps,
int storageType,
NSDictionary properties)
public static int[] TIFFCompressionTypes()
public static NSData TIFFRepresentationOfImageReps(NSArray array)
If a problem is encountered during generation of the TIFF, throws a TIFFException or a BadBitmapParametersException.
public static NSData TIFFRepresentationOfImageReps(
NSArray array,
int compression,
float factor)
NSBitmapImageRep.h
, and
are described in "Constants" . factor provides
a hint for those compression types that implement variable compression
ratios; currently only JPEG compression uses a compression factor.
If your compression type doesn't implement variable compression
ratios, or it does and you don't want the image to be compressed,
specify a compression factor of 0.0.If the specified compression isn't applicable, no compression is used. If a problem is encountered during generation of the TIFF, throws a TIFFException or a BadBitmapParametersException.
public byte[] bitmapData()
See Also: getBitmapDataPlanes:
public byte[][] bitmapDataPlanes()
public int bitsPerPixel()
public int bytesPerPlane()
See Also: bytesPerRow
public int bytesPerRow()
See Also: bytesPerPlane
public boolean canBeCompressedUsingType(int compression)
NSBitmapImageRep.h
,
and are described in "TIFF Compression" . This method returns true if the receiver's
data matches compression; for example,
if compression is TIFFCompressionCCITTFAX3
,
then the data must be one bit-per-sample and one sample-per-pixel.
It returns false if the data doesn't match compression or
if compression is unsupported. public void colorizeByMappingGray(
float midPoint,
NSColor midPointColor,
NSColor shadowColor,
NSColor lightColor)
Works on images with 8-bit SPP; thus either 8-bit gray or 24-bit color (with optional alpha).
public float compressionFactor()
public int compressionType()
public boolean isPlanar()
See Also: samplesPerPixel
public int numberOfPlanes()
See Also: samplesPerPixel, hasAlpha (NSImageRep), bitsPerSample (NSImageRep)
public NSData representationUsingType(
int storageType,
NSDictionary properties)
public int samplesPerPixel()
See Also: hasAlpha (NSImageRep), bitsPerSample (NSImageRep)
public void setBitmapData(byte[] aByte[])
public void setBitmapDataPlanes(byte[][] aByte[][])
public void setCompressionWithFactor(
int compression,
float factor)
When an NSBitmapImageRep is created, the instance stores the compression type and factor for the source data. TIFFRepresentation and TIFFRepresentationOfImageReps (static method) try to use the stored compression type and factor. Use this method to change the compression type and factor.
See Also: canBeCompressedUsingType
public void setProperty(
String property,
Object value)
public NSData TIFFRepresentation()
public com.apple.yellow.foundation.NSData TIFFRepresentation(
int compression,
float factor)
TIFFCompressionNEXT
),
the stored compression is changed to TIFFCompressionNone
and
the compression factor to 0.0 before the TIFF representation is
generated.If a problem is encountered during generation of the TIFF, throws an TIFFException or a BadBitmapParametersException.
See Also: TIFFRepresentationOfImageReps
public Object valueForProperty(String property)