×
Namespaces

Variants
Actions

如何获取S60第三版上的图片缩略图

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
huwell 在 04 Jul 2007 创建
最后由 hamishwillee 在 15 Dec 2011 编辑
  • 设备, 软件 版本:

S60 3rd Edition


  • 详细描述:

描述

在S60第二版上,我们可以通过CPAlbImageUtil类提供的GetThumbnailL()方法获取存放在多媒体文件夹中的图片的缩略图,但在第三版中,Photo Album API已经被新的Media Gallery API取代了,而它并没有提供直接方法来获取图片的缩略图。


解决方案

一般说来,我们可以通过扫描存放图片的文件夹来获取缩略图。 存放缩略图的文件目录一般格式如下:

<DRIVE>:\ Data \ Images \ _PAlbTN \


在Nokia N系列手机中,目录存放格式不同于其他手机:

<DRIVE>:\ Data \ Images \ <YearMonth> \ _PAlbTN \ <R1XR2> \


其中R1和R2是设备指定的,这样同个缩略图可能有多个版本呢。

注意,_PAlbTN目录一般为隐藏。

要在S60第三版上完成这些工作,找出图片缩略图,需要采用递归搜索的方式来处理这些图片目录。

一般来说,缩略图和主图片的名称是一致的,不过有个不一样的后缀,例如,某图片名称为some_picture.jpg,那其缩略图的名字就可能为some_picture.jpg_170x128.


下列这个实例简要的说明图片/缩略图的递归搜索方式:

RFs fs;
 
User::LeaveIfError(fs.Connect());
 
CleanupClosePushL(fs);
 
// assumes phone memory is used for storing images
 
_LIT( KImagesPath, "C:\\Data\\Images\\" );
 
// to list known image file(s) and thumbnail(s), use imagename.ext*
 
// to list thumbnail(s) only for a known image, use imagename.ext_*
 
// to list all available images and thumbnails, use *.*
 
_LIT(KImageName,"some_picture.jpg*");
 
CDirScan* scan = CDirScan::NewLC( fs );
 
scan->SetScanDataL( KImagesPath,
 
KEntryAttNormal|KEntryAttHidden,
 
ESortNone,
 
CDirScan::EScanDownTree );
 
FOREVER
 
{
 
CDir* dirlis = 0;
 
TRAPD(error, scan->NextL(dirlis));
 
if (error || !dirlis)
 
{
 
break;
 
}
 
delete dirlis;
 
FindFile( fs, scan->FullPath(), KImageName );
 
};
 
CleanupStack::PopAndDestroy(2); // scan, fs
 
void FindFile( RFs& aFs, const TDesC& aDir, const TDesC& aImageWild )
 
{
 
CDir* dirList;
 
TFindFile FindObj( aFs );
 
TInt j = FindObj.FindWildByDir( aImageWild, aDir, dirList );
 
if( j == KErrNone )
 
{
 
for ( TInt i = 0; i < dirList->Count() ; i++ )
 
{
 
TFileName fullname(aDir);
 
fullname.Append((*dirList)[i].iName);
 
// fullname now contains path and name of image/thumbnail
 
}
 
}
 
}
This page was last modified on 15 December 2011, at 10:00.
177 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×