How rate of Reading SD-CARD works ?

The time to open a file is hard to predict. FAT directories are not ordered so open must do a linear search. Unused directory entries are scattered in the directory.

There is no simple way with SD.h to open files fast when you have 600 or more in a directory.

I would create a large contiguous file and place all the images in this file with each image in a fixed size record. I would then read the records using the raw SD read functions in SD fat.

Here is how raw read/write works. Acessing SD card without using Sd.h - #6 by fat16lib - Storage - Arduino Forum.

SdFat has a function to create a contiguous file.

bool SdBaseFile::createContiguous ( SdBaseFile * dirFile,
const char * path,
uint32_t size
)

Create and open a new contiguous file of a specified size.

Parameters:
[in] dirFile The directory where the file will be created.
[in] path A path with a valid DOS 8.3 file name.
[in] size The desired file size.

There is also a function to find the location to the file.

bool SdBaseFile::contiguousRange ( uint32_t * bgnBlock,
uint32_t * endBlock
)

Check for contiguous file and return its raw block range.

Parameters:
[out] bgnBlock the first block address for the file.
[out] endBlock the last block address for the file.