¿Cómo guardar la imagen implementada por la programación MFC en el disco?
Para usar imágenes jpg o png, necesitas usar la clase en la biblioteca Multimedia ICL proporcionada por Symbian. La más importante es la clase CImageDecoder, que proporciona la función de decodificar imágenes.
Veamos cómo usarlo. Primero defina dos cadenas:
_LIT(KJPEGFile,"C:\\Data\\me.jpg");
_LIT(KJPEGType,"image/jpeg"); p>
El código utilizado es relativamente simple, como se muestra a continuación:
iDec = CImageDecoder::FileNewL(iRFs,KJPEGFile);
iParent->iBkImageMask=new ( ELeave ) CFbsBitmap();
iParent->iBkImageMask->Crear( iDec-> FrameInfo().iOverallSizeInPixels,iDec-> FrameInfo().iFrameDisplayMode );
iDec-> Convertir ( &iStatus, *(iParent->iBkImageMask) );
donde iDec es una instancia de CImageDecoder e iRFs es una instancia de RF. Y iParent->iBkImageMask es una instancia de objeto CFbsBitmap.
En otras palabras, primero usamos CImageDecorder::FileNewL para abrir un archivo de imagen (determinará el tipo de imagen por sí solo y también podemos proporcionarle el tipo de imagen que especifiquemos). Luego, la información de esta imagen se guarda en iDec->FrameInfo(), y esta información se puede usar para crear una instancia de CFbsBitmap (porque todas las imágenes mostradas en Symbian son de este tipo). Finalmente, llame a la función asincrónica Convertir de CImageDecorder para convertir la imagen (en formato jpeg o png) en un mapa de bits CFbsBitmap. El único problema es que Convert es una función asincrónica y el primer parámetro es de tipo TRequestStatus (que puede ser el miembro iStatus de un objeto activo).
Además de CImageDecorder::FileNewL, también existe CImageDecorder:;DataNewL, que también se puede utilizar para construir datos de imagen a partir del contenido de bytes de un búfer, pero su segundo parámetro es aSourceData de tipo TDesC8&.
[Suplemento]
No olvides incluir el archivo de encabezado ImageConversion.h y la biblioteca de importación imageconversion.lib.