• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: CIImage (TIFFRepresentation) memory leak
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CIImage (TIFFRepresentation) memory leak


  • Subject: Re: CIImage (TIFFRepresentation) memory leak
  • From: email@hidden
  • Date: Tue, 11 Mar 2008 11:53:58 +0100

Thanks a bunch! That worked great. No more leaking.

On Tue, Mar 11, 2008 at 4:46 AM, Rob Keniger <email@hidden> wrote:
>  I had problems with this too, and I use a workaround I found somewhere
>  where you render to a CGImageRef in the context of the current window.
>  Here's a dump of the code:
>
>  //theImage is an existing NSImage
>  CIImage *outputImage = [CIImage imageWithData:[theImage
>  TIFFRepresentation]];
>
>  //to draw the image processed by Core Image, we need to draw into an
>  on-screen graphics context
>  //this works around a bug in CIImage where drawing in off-screen
>  graphics contexts causes a huge memory leak
>
>  //get the current window's graphics context so that we have an on-
>  screen context
>  //usually we would use any view's window but generically you can just
>  ask for the main window
>  CIContext *ciContext = [[[NSApp mainWindow] graphicsContext] CIContext];
>  if(ciContext == nil)
>  {
>         NSLog(@"The CIContext of the main window could not be accessed.
>  Bailing out of the image creation process.");
>         return;
>  }
>
>  CGAffineTransform transform;
>  transform = CGAffineTransformMakeTranslation(0.0,[outputImage
>  extent].size.height);
>  transform = CGAffineTransformScale(transform, 1.0, -1.0);
>  outputImage = [outputImage imageByApplyingTransform:transform];
>
>  //render the CIIimage into a CGImageRef in the on-screen context
>  CGImageRef cgImage = [ciContext createCGImage:outputImage fromRect:
>  [outputImage extent]];
>  // Draw the CGImageRef into the current context
>  if (cgImage != NULL)
>  {
>         CGContextDrawImage ([[NSGraphicsContext currentContext]
>  graphicsPort], [outputImage extent], cgImage);
>         CGImageRelease (cgImage);
>  }
>
>  HTH
>
>  --
>  Rob Keniger
>
>
> _______________________________________________
>
>  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
>
_______________________________________________

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

References: 
 >CIImage (TIFFRepresentation) memory leak (From: email@hidden)
 >Re: CIImage (TIFFRepresentation) memory leak (From: email@hidden)
 >Re: CIImage (TIFFRepresentation) memory leak (From: Rob Keniger <email@hidden>)

  • Prev by Date: Pragmatic use of private framework class (in this case OSADictionary)
  • Next by Date: Re: [Moderator] iPhone discussion here - RETRACTION
  • Previous by thread: Re: CIImage (TIFFRepresentation) memory leak
  • Next by thread: Re: CIImage (TIFFRepresentation) memory leak
  • Index(es):
    • Date
    • Thread