On May 8, 2020, at 6:00 PM, Gabriel Zachmann via Cocoa-dev 
<cocoa-dev@lists.apple.com> wrote:
> 
>> Sure. Just be aware that if you're using NSImage, simply loading an NSImage 
>> does not rasterize it; the class tries to be 'lazy' about doing work. So 
>> your background task should explicitly render it, e.g. into an 
>> NSBitmapImageRep.
> 
> I am using CGImageSourceCreateImageAtIndex and related functions.
> But I am still unclear which function actually takes the time.
> Maybe it is only when I create the CALayer like this?
> 
> CALayer * imgLayer    = [CALayer layer]; 
> imgLayer.contents     = nsimage;

Reading a 50MB image will definitely take some time, so preloading the image 
will definitely help. I’ve usually used an NSOperationQueue but my apps working 
with images can sometimes be loading hundreds of images and NSOperationQueue 
has an option to limit the number of operations run concurrently.  Since you’ll 
only be loading the next image then a single GCD dispatch would work just as 
well.

Also, if you’re already getting a CGImageRef using 
CGImageSourceCreateImageAtIndex, why not just set imgLayer.contents to the 
CGImageRef? 

Jim Crate

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to