Re: "Live" image preview, huge memory usage...
Re: "Live" image preview, huge memory usage...
- Subject: Re: "Live" image preview, huge memory usage...
- From: Jean-Nicolas Jolivet <email@hidden>
- Date: Tue, 02 Dec 2008 22:53:11 -0500
Interesting... I thought about it but dismissed the idea (can't really
remember why)...
The thing is, though, that I am also doing some fancier stuff with the
pic ( i.e re-sizing and/or cropping, adding a border etc..).. I wrote
all these methods already without CIImage (basically Im using
BitmapImageRep all the way for everything because its much faster than
CIImage for some operations... actually for cropping Im using
CGImageSource/CGImageRef...which is much faster than anything else I
tried) so basically CIImage is only part of the chain (for brightness/
contrast/saturation) but for the other parts Im using BitmapImageRep...
since I already have a bitmapImageRep I figured displaying its data in
an NSImaveView was probably not a big loss in terms of performance...
I wonder if drawing directly would be worth it in my case... and most
importantly, if it would help solve my huge memory problem (perhaps
drawing directly instead of storing the preview in an imageRep would
help on the memory usage though so you might have a point!)
J-N
On 2-Dec-08, at 8:27 PM, douglas welton wrote:
Jean-Nicolas,
I haven't followed all of your previous post, so I may be proposing
something that you have dismissed already...
Is there a reason that you are using NSImageView to display the
image instead of drawing directly (in a custom view) from the
CIImage that is output from the last filter in the chain?
curiously,
douglas
On Dec 2, 2008, at 7:01 PM, Jean-Nicolas Jolivet wrote:
Well, right now I am using CoreImage (CIImage and CIImageFilters)
to do the brightness/contrast adjustment...
The problem is, I still have to put the result in my NSImageView
after that (which is, I assume, what takes up all this ram??)
On 2-Dec-08, at 6:38 PM, glenn andreas wrote:
On Dec 2, 2008, at 5:29 PM, Jean-Nicolas Jolivet wrote:
(This is linked to my last post on the list, however it's a
completely different topic so I posted it separately)
To sum it up, my app allows to do some basic modifications to an
image (brightness/contrast/saturation among others).... those are
applied via CIFilters, the app also allows to re-size
images...Right now I'm trying to work exclusively with
BitmapImageRep since it seems to be faster than using NSImage...
I display a "live" preview of the image (I say "live" because
basically all my sliders (to control brightness etc.) do not send
continuously but only once the mouse released them)... anyway the
way I got it working right now is like this:
I have an NSBitmapImageRep called "previewImage"... this contains
the preview image and it gets updated everytime the brightness/
contrast/saturation sliders are released...
in my preview window, I have an NSImageView.. I bound the data of
this image view to the "previewImageData" key of my controller
which basically only does this:
return [previewImage TIFFRepresentation];
Now, all this is working well, however, I see HUGE ram increases
every time I move a slider.. (it gets in the 100+ mb very
fast)...and it never seems to drop... I tried to set my sliders
to continuous for fun, it gets at about 200mb of ram in a matter
of seconds...
I ran Instruments and MallocDebug, apparently I have no leaks
(the only leaks I have are NSPathStore which I am not creating)...
Is anything wrong with the way Im doing it? Why the huge ram
increases that never drops? If there was an obvious leak I guess
Instrument or MallocDebug would've catch it?
One thing to look at is to use CoreImage to do the brightness/
contrast adjustments - rest assured, it will be able to adjust the
brightness and contrast of an image faster than you will (since it
can use the video card, for example).
Another option, though trickier, is to use ColorSync and make an
adjustment profile which is attached to the image, and then just
have the image refreshed with the new profile - for things like
contrast, brightness, gamma, etc... this works well all the way
back to 10.3.
Glenn Andreas email@hidden
<http://www.gandreas.com/> wicked fun!
JSXObjC | the easy way to unite JavaScript and Objective C
Jean-Nicolas Jolivet
email@hidden
http://www.silverscripting.com
_______________________________________________
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
Jean-Nicolas Jolivet
email@hidden
http://www.silverscripting.com
_______________________________________________
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