Re: NSImage TIFFRepresentation crashes
Re: NSImage TIFFRepresentation crashes
- Subject: Re: NSImage TIFFRepresentation crashes
- From: Mike Abdullah <email@hidden>
- Date: Sun, 10 Mar 2013 13:07:18 +0000
On 10 Mar 2013, at 13:04, Markus Spoettl <email@hidden> wrote:
> On 3/10/13 1:09 PM, Mike Abdullah wrote:
>>> NSData *tiff = [image TIFFRepresentation];
>>> NSBitmapImageRep *bmprep = [NSBitmapImageRep imageRepWithData:tiff];
>>> NSDictionary *props = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], NSImageInterlaced, nil];
>>> NSData *pngData = [bmprep representationUsingType:NSPNGFileType properties:props];
>>
>> This is a massively wasteful approach. Likely the best compromise for your
>> needs is to grab a CGImage from the NSImage, and then generate the PNG from
>> that (either using NSBitmapImageRep or CGImageDestination). This takes care
>> of only creating a fresh CGImage instance if actually needed.
>
> OK, I'll look into that, thanks. Since performance is not really a concern and if the implementation doesn't have any other weak spots that could cause legitimate trouble, it's a bit academic, though.
>
> The point of the original question was to find out if -TIFFRepresentation is "allowed" to crash on special images and if there was a way to predict such a crash or avoid it.
I think what you're seeing is that any method in the frameworks is allowed to fail weirdly should you ask of it something that exceeds the available memory.
From the original exception, I wonder if your user has brought in an image that is a massive black and white scan. Many, many pixels, but each is only either black or white, so the overall memory usage is reasonable. Converting to a TIFF might attempt to use more data per pixel, ballooning the file size.
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden