2009-08-24 2 views
2

탐색기를 사용하여 미리보기 이미지 모드로 이미지를 봅니다. 각 이미지 (bmp, jpg)의 미리보기 이미지를 얻는 것은 정말 빠릅니다.탐색기가 이미지의 축소판을 정말 빨리 가져 오는 방법, 어떻게 작동합니까?

다음 코드를 사용하여 각 이미지의 축소판을 생성하고 있습니다. 그러나 그것은 탐색기보다 훨씬 느립니다. 어떻게 시스템의 정확한 축소판을 생성 할 수있는 코드의 일부를 작성할 수 있습니까? (다음 코드에 의해 생성 된 미리보기 이미지는 때때로 위쪽 및 아래쪽 또는 왼쪽과 오른쪽에 검은 색 밴드가 있습니다. 이유를 모르겠다 ...). 또는 탐색기의 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..... 
} 
+3

처음에는 탐색기에 미리보기 캐시가 있고 아마 디렉토리를로드 할 때 작업자 스레드 나 무언가에 미리보기가 생성됩니다. –

+1

각 폴더 저장 이미지 축소판에서 thumb.db를 알고 있지만 삭제하면 탐색기가 축소판을 실제로 빠르게 재생성합니다. – user25749

+0

중복 된 http://stackoverflow.com/questions/1316170/having-an-image-file- buffer-in-memory-what-is-the-the -estest-way-to-the-thum? –

답변

1

탐색기 아마 Exif 포함 된 JPG 썸네일을 사용하고 있습니다.

간단한 Exif Image Viewer을보고 사용중인 이미지에 포함 된 미리보기 이미지가 포함되어 있는지 확인하십시오.

1

저에게있어서 Explorer는 엄지 손가락을 천천히 생성합니다. 내 자신의 코드는 축소판을 생성하는 데 훨씬 빠르게 실행됩니다. 내가 겪었던 문제는 FindFirst/FindNext가 "파일 이름"시스템 대신 "파일 객체"시스템을 사용하기 때문에 탐색기에 비해 느리다는 것입니다. 나는 디렉토리에서 파일 이름을 얻기 위해 빠른 코드를 찾고 싶다.

+0

여기에 있습니다. 'thumbs.db'에서 이미지를 읽는 경우에만 빠릅니다. 그렇지 않으면 매우 오랜 시간이 걸립니다. –

관련 문제