На протяжении многих лет я часто спрашивал себя, почему разработчики игр помещают много маленьких изображений в большое. Но не только разработчики игр делают это. Я также помню, что у старого доброго MP3-плеера Winamp был файл дизайна пользовательского интерфейса, представляющий собой одно огромное изображение, содержащее множество маленьких.
Я также видел несколько больших библиотек JavaScript с графическим интерфейсом, таких как ext.js, использующих эту технику. В ext.js есть большое изображение, содержащее много маленьких.
Одна вещь, которую я заметил, такова: независимо от того, насколько маленьким является мое PNG-изображение, Finder на Mac всегда говорит мне, что он потребляет не менее 4 КБ. Что чертовски много, если у вас всего 10 пикселей.
Так сделано ли это потому, что хранение 20 или более маленьких изображений в большом намного эффективнее по сравнению с 20 отдельными файлами, каждый из которых, вероятно, имеет свой собственный заголовок и метаданные?
Это потому, что поиск файлов в файловой системе является дорогим и медленным, и поэтому гораздо быстрее просто найти только одно большое изображение, а затем разделить его на более мелкие после загрузки в память?
Или это лень, потому что думать об очень многих именах файлов утомительно?
Есть ли название этой технике? И как эти маленькие изображения отделяются от большого во время выполнения?