There are several ways to integrate images into an application to be used at runtime.
I would say it depend on usage to choose what fit best.
If its just a few images that needs to be computed very fast, either store them in a TImageList or link them as an array of byte into your code (as data.inc file for example) or the traditional resourcestream way.
(For resourcestreams I personal prefer to write a small script that includes everything, it compiles and link in automatic when building the binary,
the benefit is that you can have the script open within IDE to quick modify something
the disavantage, you can not use the resources menu from IDE.)
When its a big collection I would think about a different approach that would use external data, two things popping up fast on that matter, either archive them (.zip exemplary) or put them into a database, at runtime the data must be extracted to be used, some archive libraries offer for such suppose to extract direct into a stream that you can use within your app to not need to write data first to disk.
At the end all approaches do the same, difference is memory consumption vs execution speed vs maintain/updating.