iOS: как создать и нарисовать (и сохранить) изображение размером больше экрана? - PullRequest
3 голосов
/ 16 декабря 2011

Мы создаем фото приложение для iOS.При этом мы должны создавать изображения динамического размера размером до 2500x1600 пикселей.После того, как это изображение было создано, мы хотим достаточно быстро нарисовать меньшие изображения поверх большого.

Проблема, как мы видим, состоит в том, что невозможно получить контекст, больший, чем разрешение экрана.Вызов не падает, но возвращает ноль-контекст.Как можно решить такую, казалось бы, простую задачу?

Во-вторых, как только этот контекст создан, каков самый быстрый способ нарисовать небольшое изображение в заданной позиции поверх большого?

Редактировать:

Мы нашли решение.CGBitmapContextCreate возвращает nil, поскольку параметры ширины и высоты были заданы как числа с плавающей точкой, а не как целые.Иногда решение прямо перед вами, и вы слишком слепы, чтобы увидеть его.Надеюсь, этот ответ поможет другим людям, у которых возникла такая же проблема.

Ответы [ 2 ]

1 голос
/ 17 декабря 2011

Убедитесь, что вы указали целочисленную ширину и высоту в качестве аргументов CGBitmapContextCreate, в противном случае он возвращает nil.В противном случае размер контекста не должен иметь значения до тех пор, пока для него не будет выделено достаточно памяти.

0 голосов
/ 16 декабря 2011

Должна быть возможность получить контекст практически для любого растрового изображения, для которого вы можете выделить / малоколочую память, в вашем случае, кратное 2500x1600x4 байтов пикселей ARGB.

Возможно, вы захотите использовать CATiledLayer, где вам нужно будет рисовать только плитки, покрытые меньшим изображением. Возможно, вам придется использовать мозаику для поддержки более старых устройств, которые ограничены максимальным размером плитки, который будет помещаться в кеш текстуры GPU.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...