【问题标题】:explorer get image's thumbnail really fast, how does it work?资源管理器获取图像缩略图非常快,它是如何工作的?
【发布时间】:2009-09-05 22:50:28
【问题描述】:

我正在使用资源管理器以缩略图模式查看图像。 获取每张图片的缩略图(bmp、jpg)真的很快。

我正在使用以下代码为每个图像生成缩略图。但是它比资源管理器慢得多,如何编写部分代码以像系统一样快速准确地生成缩略图(以下代码生成的缩略图有时在顶部和底部或左侧和右侧有黑带,我不知道为什么...)。或者我可以调用 explorer 的 API 来使用它的功能生成缩略图吗?

Bitmap sourceImg(xxx);
int nSize = sourceImg.GetPropertyItemSize(PropertyTagThumbnailData);
if(nSize > 0)
    {
    PropertyItem * pItem = (PropertyItem*)malloc(nSize);
    if (pItem != NULL)
    {
        sourceImg.GetPropertyItem(PropertyTagThumbnailData, nSize, pItem);
    }
    GenerateThumbnail from pItem.....
}

【问题讨论】:

  • 对于初学者来说,资源管理器可能有一个缩略图缓存,并且可能在您第一次加载目录时在工作线程或其他东西中生成缩略图。
  • 我知道 thumb.db 在每个文件夹中存储图像缩略图,但是,如果我删除它,资源管理器会非常快地重新生成缩略图

标签: c++ image thumbnails explorer


【解决方案1】:

Explorer 可能正在使用 Exif 嵌入的 jpg 缩略图。

查看简单的Exif Image Viewer 以确认您使用的图像包含嵌入式缩略图。

【讨论】:

    【解决方案2】:

    对我来说,Explorer 生成缩略图的速度非常慢。我自己的代码在生成缩略图时运行得更快。我遇到的问题是 FindFirst/FindNext 比资源管理器慢,因为它使用“文件对象”系统而不是“文件名”系统。我想找到快速代码来获取目录中的文件名。

    【讨论】:

    • 这里也一样。只有从thumbs.db读取图片才快,否则需要很长时间。
    猜你喜欢
    • 2010-10-20
    • 2010-09-25
    • 1970-01-01
    • 2012-03-16
    • 2011-03-24
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-01
    相关资源
    最近更新 更多