Максимальный размер растрового изображения для NSImage или CGImage?

Я генерирую растровые изображения с Cocoa, используя NSImage или CGImage (вероятно, UIImage будет работать аналогично)

Как определить, какой максимальный размер изображения я могу создать?

Я предполагаю, что это должно быть в некотором отношении к доступной памяти?


person MartinW    schedule 06.11.2017    source источник
comment
Вы не можете полагаться на объем свободной памяти, сообщаемый системой. Проблема в том, что растровое изображение требует непрерывного блока памяти необходимого размера. Например, вам может потребоваться выделить 100 МБ, система сообщает, что у нее есть 500 МБ, но память может быть слишком фрагментирована (т.е. состоять из нескольких кусков, скажем, 50 МБ и меньше). В этом случае его следует выкинуть из памяти. По идее, этой проблемы вообще не должно быть в 64-битных системах (по крайней мере, в Windows), но... это всё-таки Apple. :-)   -  person Andrew Simontsev    schedule 16.11.2017
comment
Возможно, вы захотите увидеть недавний комментарий к старому сообщению (15 сентября): stackoverflow.com/questions/12031704/   -  person mikep    schedule 19.11.2017


Ответы (1)


Помимо технического любопытства, всегда плохо размещать большие изображения. Apple (особенно для iPhone/iOS) усердно работала над использованием плиток и «плиточных» классов (например, CATiledLayer) для отображения очень больших изображений. Я видел его непосредственно на WWDC в прошлые годы (см. пример кода PhotoScroller, https://developer.apple.com/library/content/samplecode/PhotoScroller/Introduction/Intro.html)

person ingconti    schedule 19.11.2017
comment
То же самое относится не к отображению, а к созданию изображений? - person MartinW; 19.11.2017
comment
хорошая точка зрения! :) Я скажу: а) если не для отображения, вы обрабатываете изображения, попробуйте решение на основе файлов б) iOS не правильное решение. - person ingconti; 20.11.2017