David hello.

I didn't use blocks, in order to support 3.2, just in case, you never know who 
is out there still using it.  so I sue normal [NSObject performSelectorOnThread 
methods,..

Now I divided the Saving operation and the thumbnail creation in 2 separate 
threads, the thumbnail is inside the thread of saving, now its much faster,  
encoding and saving takes little time, I believe that the thumbnail creation is 
the responsible for slowing the process.

Basically and I think Im very wrong in whatIm doing is create a screenshot of 
the View with all its subviews, following Apple docs to do so, so each view's 
layer renderInContext is called. Of course I previously create a 
UIImageCOntext,  then after I get that image,  I scaled it down
to the thumb dimensions,  but here is where it get's messy:

The thumb must have a rounded corner mask + the border stroke, if I do that in 
the same UIImageContext I created to resize the screenShot I got, then I get no 
rounded corners for the image but the stroke of the path is rounded.  So I was 
reading a little and to add a clip to a context I must have a BItMapContext, in 
this case the image gets rounded corners but if I try to stroke the path the 
clip I add goes away.

So what I did was, create the thumb with a UIImageContext, then clip it using a 
UIBitMapContext, then create a final Image using once again a UIImageContext 
which in this case I draw the rounded corner image and then stroke the path.

So I believe I can do better in this process.


Thx

Gustavo




On Dec 7, 2010, at 1:59 PM, David Reed wrote:

> 
> On Dec 7, 2010, at 3:16 AM, Gustavo Pizano wrote:
> 
>> Hello Guys..
>> 
>> I see, I have been using GCD and blocks but on somme OSX app I did before, 
>> not on iPhone, I tough tit wasn't there... :P. 
> 
> 
> Blocks/GCD are in iOS 4.0 and higher. Assuming you have a paid developer 
> account, you may want to watch the relevant WWDC videos from last year.
> 
>> 
>> SO, I from within the method( block) that makes all the saving process, I do 
>> something like 
>> 
>>>>    dispatch_async(dispatch_get_main_queue(), ^{
>>>>       // code executed on main thread goes here (i.e., updating the 
>>>> progress indicator in your case
>>>> 
>>>>    });
>> 
>> 
>> and update the progress indicator bar,  great im gonna try that..
> 
> 
> Yes.
> 
> 
>> 
>> also I have the option to call from within the same method a  
>> [<MyConotroller With the Progress indicator> performSelectorinMainThread: 
>> withObject:<NSNumber with the float value to add> waitUntilDone:NO];  
>> 
>> right?
> 
> 
> Yes, ssuming the selector you pass (you left it out) takes the NSNumber and 
> updates the progress bar.
> 
> 
>> 
>> 
>> What about the saving operation improving its saving time?,  I will check 
>> today what takes longer, if creating the thumbnial, or encoding the views,  
>> maybe I shouldn't encode the whole view, but s just the image reference and 
>> the transform matrix...  ?/ I will try that one also.
> 
> 
> I didn't look at your code closely and don't have the other code around it to 
> profile which part is taking so long. 
> 
> Dave
> 
> 

_______________________________________________

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to