On Jun 8, 2013, at 7:39 PM, Gerriet M. Denkmann wrote:

>       url = some/picture.gif
>       NSDataReadingOptions mask = 0;  //      NSDataReadingUncached
>       NSData *data = [ NSData dataWithContentsOfURL: url options: mask error: 
> &outError ];
> got 19420 bytes
> 
>       NSImage *image = [ [ NSImage alloc ] initWithContentsOfURL: url ];
>       BOOL ok = [ NSArchiver archiveRootObject: image toFile: @"/tmp/anImage" 
> ];
> got 307559 bytes (NSKeyedArchiver adds another half  kB)
> 
> This 16-fold increase of data is - regardless of image quality - not 
> acceptable for my purposes.

This isn't the technique I recommended.  Don't archive the image object.  
Create a data representation using +[NSBitmapImageRep 
representationOfImageRepsInArray:usingType:properties:].

$ python
...
>>> from AppKit import *
>>> u = 
>>> NSURL.URLWithString_("https://upload.wikimedia.org/wikipedia/commons/e/e2/Sunflower_as_gif_small.gif";)
>>> d1 = NSData.dataWithContentsOfURL_(u)
>>> d1.length()
57270
>>> i = NSImage.alloc().initWithContentsOfURL_(u)
>>> d2 = 
>>> NSBitmapImageRep.representationOfImageRepsInArray_usingType_properties_(i.representations(),
>>>  NSGIFFileType, None)
>>> d2.length()
54377

It actually got smaller!

Regards,
Ken


_______________________________________________

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