I have a problem, i save a photo using the pnoJpegLib with a treo 650 and when
i look the photo in the SD card, the image is in other colors, like a Thermal
Scan.
Please, help me!!!!!!!!!
Thanks.
static Err CamaraStart(void)
{
Err error = errNone;
UInt32 toDepth = 16;
UInt32 currentDepth;
UInt32 supportedDepths;
// Get current display depth.
WinScreenMode (winScreenModeGet, NULL, NULL, ¤tDepth, NULL);
// Get supported display depths.
WinScreenMode (winScreenModeGetSupportedDepths, NULL, NULL, &supportedDepths,
NULL);
if ((currentDepth != toDepth) && (supportedDepths & (1 << (toDepth - 1))) )
{
error = WinScreenMode (winScreenModeSet, NULL, NULL, &toDepth, NULL);
if (error)
{
FrmCustomAlert(GeneralAlert, "WinScreenMode error:", NULL,
NULL);
return error;
}
}
error = WinScreenMode (winScreenModeSet, NULL, NULL, &toDepth, NULL);
// Library load (Try loading library from Treo 600)
if( gLibRefNum == sysInvalidRefNum )
{
error = SysLibFind(kCameraLibName, &gLibRefNum);
if (error)
{
error = SysLibLoad(sysFileTLibrary, kCameraLibCreator,
&gLibRefNum);
if (error)
gLibRefNum = sysInvalidRefNum;
}
}
// Library load (Try loading library from Ace)
if (gLibRefNum == sysInvalidRefNum)
{
error = SysLibFind(kCamLibName, &gLibRefNum);
if (error != errNone)
error = SysLibLoad(kCamLibType, kCamLibCreator, &gLibRefNum);
if (error)
{
FrmCustomAlert(GeneralAlert, "Unable to load Camera library",
NULL, NULL);
return error;
}
OldLibrary = false;
}
error = CameraLibraryOpen(gLibRefNum, OldLibrary);
return error;
}
//On capture button click
static Err WindowPreview (void)
{
UInt32 i;
Err err = 0;
UInt16 * bits;
BitmapType * bitmapP;
// New library stuff
CamLibBitmapInfoType info;
CamLibCaptureType capture;
CamLibSettingType captureFormat;
PhotoCaptureInfo captureInfo;
captureFormat.type = kCamLibCaptureDataFormatRGB565;
CamLibControl(gLibRefNum, kCamLibCtrlCaptureFormatSet, (void *)
&captureFormat);
CamLibControl(gLibRefNum, kCamLibCtrlCaptureGetBitmapInfo, (void *)
&info);
captureInfo.winH = WinCreateOffscreenWindow(info.width / 2, info.height
/ 2, nativeFormat, &err);
captureInfo.bufferP = (unsigned char *)
BmpGetBits(WinGetBitmap(captureInfo.winH));
capture.userDataP = &captureInfo;
capture.callbackP = PhotoCaptureCallback;
CamLibControl(gLibRefNum, kCamLibCtrlCapture, &capture);
WinDrawBitmap(WinGetBitmap(captureInfo.winH), previewLeft, previewTop);
Err error;
pnoJpeg2EncPtr jpegEncode;
MemHandle imageHandle;
MemPtr imageData;
FileRef fr;
UInt16 pnoJpegRefNum,volRefNum=expErrEnumerationEmpty;
pnoJpeg_OpenLibrary(&pnoJpegRefNum);
error = pnoJpeg2EncodeCreate(pnoJpegRefNum, &jpegEncode);
pnoJpeg2EncodeToMemHandle(pnoJpegRefNum, jpegEncode, &imageHandle);
pnoJpeg2EncodeSetQuality(pnoJpegRefNum, jpegEncode, 90);
pnoJpeg2EncodeProgressive(pnoJpegRefNum, jpegEncode, false);
error = pnoJpeg2Write(pnoJpegRefNum, jpegEncode,
WinGetBitmap(captureInfo.winH));
pnoJpeg2EncodeFree(pnoJpegRefNum, &jpegEncode);
imageData = MemHandleLock(imageHandle);
error = VFSFileOpen(volRefNum, "/DCIM/sample_save.jpg", vfsModeCreate |
vfsModeReadWrite, &fr);
error = VFSFileWrite(fr, MemHandleSize(imageHandle), imageData, NULL);
VFSFileClose(fr);
MemHandleUnlock(imageHandle);
MemHandleFree(imageHandle);
pnoJpeg_CloseLibrary(pnoJpegRefNum);
WinDeleteWindow(captureInfo.winH, true);
return err;
}
--
For information on using the PalmSource Developer Forums, or to unsubscribe,
please see http://www.palmos.com/dev/support/forums/