Есть ли снижение производительности при использовании UIImage в CALayer? - PullRequest
2 голосов
/ 15 октября 2008

Я использую целую кучу CALayers, создавая изображение на основе плитки, не похожее на GoogleMaps (разные версии одного и того же изображения с большей / меньшей детализацией).

Код, который я использую для этого:

UIImage* image = [self loadImage:obj.fileName zoomLevel:obj.zoomLevel];
[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];
obj.layerToAddTo.contents = [image CGImage];
[CATransaction commit];

Мне не очень хочется загружать CGImage из файла с помощью CoreGraphics, потому что я ленивый. Но я буду, если есть большой прирост производительности! LoadImage просто искажает строку, чтобы получить правильный путь для загрузки указанного изображения, а obj является NSObject-структурой, которая содержит всю информацию, необходимую для этого потока.

Помощь

Ответы [ 5 ]

3 голосов
/ 15 октября 2008

Там нет большого повышения производительности - если что-нибудь, это наоборот. Пройдя через UIImage для загрузки ваших изображений, вы получите все преимущества кэширования, которые оно делает для вас, и это будет очень быстрый критерий для использования с различными слоями CALay.

1 голос
/ 19 октября 2008

Я только что попробовал это, и использование чистой CoreGraphics для загрузки изображения вместо использования UIImage дало заметное улучшение скорости при загрузке многих изображений за один раз.

0 голосов
/ 28 сентября 2010

Одна из причин, по которой НЕ следует использовать UIImage -imageNamed: для загрузки изображений, заключается в том, что они хранятся во внутреннем кеше и что кэш не очищается в ситуации нехватки памяти.

0 голосов
/ 21 мая 2009

"Я только что попробовал это, и использование чистой CoreGraphics для загрузки изображения вместо использования UIImage дало заметное улучшение скорости при загрузке многих изображений за один раз."

Как вы избежали использования UIImage? Или, точнее, как вы загружаете файл изображения непосредственно в CoreGraphics, не проходя UIImage?

0 голосов
/ 16 октября 2008

У меня нет точного ответа, но я предполагаю, что при использовании UIImage вы увидите более медленное время загрузки, чем при использовании CGImage. С CGImage вы указываете тип изображения (jpg или png) во время создания, но с UIImage, тип объекта должен определяться динамически. По общему признанию, это, вероятно, так же просто, как просмотреть первые несколько байтов файла изображения, но это может быть не так.

Когда изображение действительно используется, я бы не подумал, что будет вообще какая-то разница между использованием CGImage, который внутренне представляет UIImage, и использованием CGImage, который вы создали сами. Я думаю, они будут в точности эквивалентны.

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