118 lines
4.5 KiB
Plaintext
118 lines
4.5 KiB
Plaintext
---------------------------------------------------------------------------
|
|
Name
|
|
|
|
MiniImage
|
|
|
|
---------------------------------------------------------------------------
|
|
Description
|
|
|
|
MiniImage shows how to use the image codecs and encode and decode
|
|
between various file formats. (GIF codecs are in a separate
|
|
sample).
|
|
|
|
Note that the sample is designed to work in Decode/Encode pairs. For
|
|
example you can choose a file to decode and save it as a .raw file and
|
|
click on the encode button and encode the .raw file back to jpeg or bmp.
|
|
This is because lots of information from the decode session is carried
|
|
over to the encoded session like the width and height of the image
|
|
which is not known by looking at the raw data. So if you click encode
|
|
without first decoding, it may not work properly. The Display button
|
|
decodes the image to BGR565. For all other decode formats, click decode
|
|
after selecting your color format. This saves the image as a .raw file.
|
|
The files need to be located on an SD Card.
|
|
|
|
General Steps for decoding Images:
|
|
|
|
1. CodecMgrCreateSession()
|
|
You can pass in the imageParamP width and height as needed, for example if
|
|
you need a 240x240 of a 320x320 image, you can pass it in, else the size
|
|
of the image is assumed. The rowbytes are also automatically calculated and
|
|
need not be passed in. If the CodecMgrCreateSession() succeeds, the
|
|
imageParamP will now contain the width and height and rowByte of the image
|
|
that's going to be used by the decoding session. Note that enlarging of an
|
|
image is not possible, for example if you pass 320x320 as input to
|
|
CreateSession() and the image is 240x240, it still remains 240x240.
|
|
|
|
2. CodecMgrEncodeDecode()
|
|
One or multiple calls to this function. Note if you allocate a big enough
|
|
buffer, this call is executed only once. The buffer size is usually
|
|
rowByte * height but this may take up too much dynamic heap space, so it is
|
|
advisable to use small buffers and loop like it is done in the sample.
|
|
To allocate large chunks use MemGluePtrNew().
|
|
|
|
3. CodecMgrDeleteSession()
|
|
Make sure you delete the session.
|
|
|
|
|
|
General Steps for encoding images:
|
|
|
|
1. CodecMgrCreateSession()
|
|
Both BMP and JPEG take different output parameters. The imageParamP should be
|
|
known beforehand since you're encoding raw data.
|
|
|
|
2. CodecMgrEncodeDecode()
|
|
The output is a file which you have already opened.
|
|
|
|
3. CodecMgrDeleteSession()
|
|
Make sure you delete a session.
|
|
|
|
Note that for Index Images, you need to fill in a separate structure that
|
|
needs to be passed to CodecMgrEncodeDecode. Please check the example.
|
|
|
|
And also note that the bitmap data for the Palm has a coordinate system that
|
|
is inverted when compared to windows bitmaps, so don't be surprised if your
|
|
encoded bitmap looks inverted on Windows.
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------
|
|
Builds With
|
|
|
|
CodeWarrior
|
|
Palm OS Developer Suite
|
|
gcc
|
|
|
|
---------------------------------------------------------------------------
|
|
Devices
|
|
|
|
All Palm devices
|
|
|
|
---------------------------------------------------------------------------
|
|
Requirements
|
|
|
|
|
|
---------------------------------------------------------------------------
|
|
Libraries Used
|
|
|
|
Codec Plugin Manager
|
|
|
|
---------------------------------------------------------------------------
|
|
How to Run
|
|
|
|
1. Launch the MiniImage application
|
|
2. Make sure the 'decode' button is selected
|
|
3. Make sure SD card is inserted, and go to the directory where the image
|
|
files are, and select an image file (.jpg)
|
|
4. Select 'display' to display picture
|
|
5. Select the Color Format
|
|
6. Select 'decode' to decode the picture to a raw format
|
|
|
|
7. Tap on the 'encode' button on top of the screen
|
|
8. Tap on the first blue folder to open an input file from SD card [the
|
|
raw file from step 6 can be used here]
|
|
9. After a file is selected and the main screen is displayed, select file
|
|
format to be JPEG. Also select the the Color Format
|
|
10. Tap on 'encode' to encode the raw image file back to JPEG
|
|
|
|
---------------------------------------------------------------------------
|
|
Note
|
|
|
|
For formats like GRAY8, Index8, Index4, Index1 the input has to be the
|
|
same format. For example the input bmp should be Index8 to get a Index8
|
|
decoded data. You will get a "No Codec found" if you try to pass a 24bit
|
|
bmp and try to decode it to Index8.
|
|
|
|
|
|
---------------------------------------------------------------------------
|
|
|