Я пишу программу, подобную фотошопу, для мобильного устройства, и я хочу поддерживать использование слоев. В лучшем случае я могу хранить около 7 бит-карт в памяти за раз. Я пытаюсь понять, могу ли я придумать способ поддержки множества слоев (например, 10 или 20), не используя много памяти.Поддерживает большое количество слоев в редакторе изображений?
Моя текущая идея заключается в том:
- Используйте один растровый в качестве активного слоя, который пользователь может в настоящее время подрисовать и манипулировать ими.
- Используйте одно растровое изображение, в котором хранится сплющенная версия всех слоев под активным слоем.
- Используйте одно растровое изображение, которое хранит сплющенную версию всех слоев над активным слоем.
Когда слой не является активным слоем, я могу записать его на диск и удалить его из памяти. Когда пользователь переключает активный слой, я затем извлекаю слой с диска и воссоздаю сплющенные изображения.
Эта идея кажется звуковой, если на каждом уровне есть только параметры непрозрачности, но я не думаю, что она будет работать, если слои могут иметь разные режимы смешивания, такие как экран и умножать. Сплюснутые нижние слои будут работать нормально, но кажется, что мне нужно будет повторно перенести все верхние слои снова, если один из них использовал режим наложения и активный слой был изменен.
Какой подход я могу использовать? Я видел различные программы рисования, поддерживающие 100 и более слоев, поэтому для этого должен быть какой-то трюк.
Спасибо, это интересная идея! – rbcc