JIU 0.12.0 Homepage

net.sourceforge.jiu.codecs
Class PCDCodec

java.lang.Object
  extended bynet.sourceforge.jiu.ops.Operation
      extended bynet.sourceforge.jiu.codecs.ImageCodec
          extended bynet.sourceforge.jiu.codecs.PCDCodec
All Implemented Interfaces:
YCbCrIndex

public class PCDCodec
extends ImageCodec
implements YCbCrIndex

A codec to read Kodak Photo-CD (image pac) image files. Typical file extension is .pcd. PCD is designed to store the same image in several resolutions. Not all resolutions are always present in a file. Typically, the first five resolutions are available and the file size is between four and six megabytes. Lossless compression (Huffman encoding) is used to store the higher resolution images. All images are in 24 bit YCbCr colorspace, with a component subsampling of 4:1:1 (Y:Cb:Cr) in both horizontal and vertical direction.

Limitations

Only the lowest three resolutions are supported by this codec.

Sample PCD files

You can download sample PCD image files from Kodak's website.

Author:
Marco Schmidt

Field Summary
static int PCD_RESOLUTION_1
          Base/16, the minimum pixel resolution, 192 x 128 pixels.
static int PCD_RESOLUTION_2
          Base/4, the second pixel resolution, 384 x 256 pixels.
static int PCD_RESOLUTION_3
          Base, the third pixel resolution, 768 x 512 pixels.
static int PCD_RESOLUTION_4
          Base*4, the fourth pixel resolution, 1536 x 1024 pixels.
static int PCD_RESOLUTION_5
          Base*16, the fifth pixel resolution, 3072 x 2048 pixels.
static int PCD_RESOLUTION_6
          Base*64, the sixth pixel resolution, 6144 x 4096 pixels.
static int PCD_RESOLUTION_DEFAULT
          Index for the default resolution , Base (PCD_RESOLUTION_3).
static int[][] PCD_RESOLUTIONS
          This two-dimensional int array holds all possible pixel resolutions for a PCD file.
 
Fields inherited from interface net.sourceforge.jiu.color.YCbCrIndex
INDEX_CB, INDEX_CR, INDEX_Y
 
Constructor Summary
PCDCodec()
          This constructor chooses the default settings for PCD image loading: load color image (all channels, not only luminance) perform color conversion from PCD's native YCbCr color space to RGB load the image in the default resolution PCD_RESOLUTION_DEFAULT, 768 x 512 pixels (or vice versa)
 
Method Summary
 String[] getFileExtensions()
          Returns all file extensions that are typical for this file format.
 String getFormatName()
          Returns the name of the file format supported by this codec.
 String[] getMimeTypes()
          Return the MIME (Multipurpose Internet Mail Extensions) type strings for this format, or null if none are available.
 boolean isLoadingSupported()
          Returns if this codec is able to load images in the file format supported by this codec.
 boolean isSavingSupported()
          Returns if this codec is able to save images in the file format supported by this codec.
 void process()
          Checks the parameter and loads an image.
 void setColorConversion(boolean performColorConversion)
          Specify whether color is converted from PCD's YCbCr color space to RGB color space.
 void setFile(String fileName, CodecMode codecMode)
          Gives a file name and codec mode to the codec which will then try to create the corresponding I/O object.
 void setMonochrome(boolean monochrome)
          Specifies whether the image is to be loaded as gray or color image.
 void setResolutionIndex(int resolutionIndex)
           
 
Methods inherited from class net.sourceforge.jiu.codecs.ImageCodec
appendComment, checkBounds, checkImageResolution, close, getBoundsHeight, getBoundsWidth, getBoundsX1, getBoundsX2, getBoundsY1, getBoundsY2, getComment, getDataInput, getDataOutput, getDpiX, getDpiY, getImage, getImageIndex, getInputAsDataInput, getInputStream, getMode, getNumComments, getOutputAsDataOutput, getOutputStream, getRandomAccessFile, hasBounds, initModeFromIOObjects, isRowRequired, isTileRequired, removeAllComments, removeBounds, setBounds, setBoundsIfNecessary, setDataInput, setDataOutput, setDpi, setFile, setImage, setImageIndex, setInputStream, setOutputStream, setRandomAccessFile, suggestFileExtension
 
Methods inherited from class net.sourceforge.jiu.ops.Operation
addProgressListener, addProgressListeners, getAbort, removeProgressListener, setAbort, setProgress, setProgress
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PCD_RESOLUTION_1

public static final int PCD_RESOLUTION_1
Base/16, the minimum pixel resolution, 192 x 128 pixels.

See Also:
Constant Field Values

PCD_RESOLUTION_2

public static final int PCD_RESOLUTION_2
Base/4, the second pixel resolution, 384 x 256 pixels.

See Also:
Constant Field Values

PCD_RESOLUTION_3

public static final int PCD_RESOLUTION_3
Base, the third pixel resolution, 768 x 512 pixels.

See Also:
Constant Field Values

PCD_RESOLUTION_4

public static final int PCD_RESOLUTION_4
Base*4, the fourth pixel resolution, 1536 x 1024 pixels. Unsupported

See Also:
Constant Field Values

PCD_RESOLUTION_5

public static final int PCD_RESOLUTION_5
Base*16, the fifth pixel resolution, 3072 x 2048 pixels. Unsupported

See Also:
Constant Field Values

PCD_RESOLUTION_6

public static final int PCD_RESOLUTION_6
Base*64, the sixth pixel resolution, 6144 x 4096 pixels. Unsupported

See Also:
Constant Field Values

PCD_RESOLUTION_DEFAULT

public static final int PCD_RESOLUTION_DEFAULT
Index for the default resolution , Base (PCD_RESOLUTION_3).

See Also:
Constant Field Values

PCD_RESOLUTIONS

public static final int[][] PCD_RESOLUTIONS
This two-dimensional int array holds all possible pixel resolutions for a PCD file. Use one of the PCD resolution constants (e.g. PCD_RESOLUTION_3 as first index. The second index must be 0 or 1 and leads to either width or height. Example: PCD_RESOLUTION[PCD_RESOLUTION_3][1] will evalute as 512, which can be width or height, depending on the image being in landscape or portrait mode. You may want to use these resolution values in your program to prompt the user which resolution to load from the file.

Constructor Detail

PCDCodec

public PCDCodec()
This constructor chooses the default settings for PCD image loading:

Method Detail

getFileExtensions

public String[] getFileExtensions()
Description copied from class: ImageCodec
Returns all file extensions that are typical for this file format. The default implementation in ImageCodec returns null. The file extension strings should include a leading dot and are supposed to be lower case (if that is allowed for the given file format). Example: {".jpg", ".jpeg"} for the JPEG file format.

Overrides:
getFileExtensions in class ImageCodec
Returns:
String array with typical file extensions

getFormatName

public String getFormatName()
Description copied from class: ImageCodec
Returns the name of the file format supported by this codec. All classes extending ImageCodec must override this method. When overriding, leave out any words in a particular language so that this format name can be understood by everyone. Usually it is enough to return the format creator plus a typical abbreviation, e.g. Microsoft BMP or Portable Anymap (PNM).

Specified by:
getFormatName in class ImageCodec
Returns:
name of the file format supported by this codec

getMimeTypes

public String[] getMimeTypes()
Description copied from class: ImageCodec
Return the MIME (Multipurpose Internet Mail Extensions) type strings for this format, or null if none are available.

Specified by:
getMimeTypes in class ImageCodec
Returns:
MIME type strings or null

isLoadingSupported

public boolean isLoadingSupported()
Description copied from class: ImageCodec
Returns if this codec is able to load images in the file format supported by this codec. If true is returned this does not necessarily mean that all files in this format can be read, but at least some.

Specified by:
isLoadingSupported in class ImageCodec
Returns:
if loading is supported

isSavingSupported

public boolean isSavingSupported()
Description copied from class: ImageCodec
Returns if this codec is able to save images in the file format supported by this codec. If true is returned this does not necessarily mean that all types files in this format can be written, but at least some.

Specified by:
isSavingSupported in class ImageCodec
Returns:
if saving is supported

process

public void process()
             throws InvalidFileStructureException,
                    MissingParameterException,
                    OperationFailedException,
                    UnsupportedTypeException,
                    WrongFileFormatException
Checks the parameter and loads an image.

Overrides:
process in class Operation
Throws:
MissingParameterException - if any mandatory parameter was not given to the operation
OperationFailedException
InvalidFileStructureException
UnsupportedTypeException
WrongFileFormatException

setColorConversion

public void setColorConversion(boolean performColorConversion)
Specify whether color is converted from PCD's YCbCr color space to RGB color space. The default is true, and you should only change this if you really know what you are doing. If you simply want the luminance (gray) channel, use setMonochrome(boolean) with true as parameter.

Parameters:
performColorConversion - boolean that determines whether color conversion is applied

setFile

public void setFile(String fileName,
                    CodecMode codecMode)
             throws IOException,
                    UnsupportedCodecModeException
Description copied from class: ImageCodec
Gives a file name and codec mode to the codec which will then try to create the corresponding I/O object. The default implementation in ImageCodec creates a DataInputStream object wrapped around a BufferedInputStream wrapped around a FileInputStream for CodecMode.LOAD. Similar for CodecMode.SAVE: a DataOutputStream around a BufferedOutputStream object around a FileOutputStream object. Codecs that need different I/O objects must override this method (some codecs may need random access and thus require a RandomAccessFile object).

Overrides:
setFile in class ImageCodec
Parameters:
fileName - name of the file to be used for loading or saving
codecMode - defines whether file is to be used for loading or saving
Throws:
IOException
UnsupportedCodecModeException

setMonochrome

public void setMonochrome(boolean monochrome)
Specifies whether the image is to be loaded as gray or color image. If argument is true, only the gray channel is loaded.


setResolutionIndex

public void setResolutionIndex(int resolutionIndex)

JIU 0.12.0 Homepage

Copyright © 2000, 2001, 2002, 2003, 2004 Marco Schmidt