FROM : Trygve Inda
DATE : Sat Mar 29 20:20:56 2008
> Yes. See
>
> http://www.cocoabuilder.com/archive/message/cocoa/2007/11/15/193191
>
> ISTR having problems specifying a nonzero bytesPerRow and passing NULL
> for the bitmap data, so you might need to either manage the buffer
> yourself or pass zero for bytesPerRow to allow NSBitmapImageRep to pad
> it appropriately.
Many thanks.
>>
>> [segImageRep dealloc];
> You should never call dealloc directly (well, unless you've overridden
> -retain/-release to handle your own refcounting).
Good catch!
>> How about:
>>
>> NSImage * image = [[[NSImage alloc] initWithContentsOfFile:path]
>> autorelease];
>>
>> [NSGraphicsContext saveGraphicsState];
>> [NSGraphicsContext setCurrentContext:[NSGraphicsContext
>> graphicsContextWithBitmapImageRep:segImageRep]];
>>
>> [image drawInRect:NSMakeRect(0, 0, [image size].width, [image
>> size].height) fromRect:NSMakeRect(0, 0, [image size].width, [image
>> size].height) operation:NSCompositeCopy fraction:1.0];
>>
>> [NSGraphicsContext restoreGraphicsState];
>
> Drawing into an NSImage is explicitly documented to be thread safe in
> the article you linked to,
I guess I was more concerned with the initWithContentsOfFile:path
> and each thread has its own graphics
> context. The post I linked to does indicate that you might want to
> use [image setCacheMode:NSImageCacheNever]. If your goal is just to
> get an NSBitmapImageRep from a file, it's probably easier just to use
> +imageRepWithContentsOfFile:.
This could work, but as I need to do pixel level manipulation, I really need
to know the exact format of the bitmap and this does not seem to let me
specify it.
Cheers,
Trygve
DATE : Sat Mar 29 20:20:56 2008
> Yes. See
>
> http://www.cocoabuilder.com/archive/message/cocoa/2007/11/15/193191
>
> ISTR having problems specifying a nonzero bytesPerRow and passing NULL
> for the bitmap data, so you might need to either manage the buffer
> yourself or pass zero for bytesPerRow to allow NSBitmapImageRep to pad
> it appropriately.
Many thanks.
>>
>> [segImageRep dealloc];
> You should never call dealloc directly (well, unless you've overridden
> -retain/-release to handle your own refcounting).
Good catch!
>> How about:
>>
>> NSImage * image = [[[NSImage alloc] initWithContentsOfFile:path]
>> autorelease];
>>
>> [NSGraphicsContext saveGraphicsState];
>> [NSGraphicsContext setCurrentContext:[NSGraphicsContext
>> graphicsContextWithBitmapImageRep:segImageRep]];
>>
>> [image drawInRect:NSMakeRect(0, 0, [image size].width, [image
>> size].height) fromRect:NSMakeRect(0, 0, [image size].width, [image
>> size].height) operation:NSCompositeCopy fraction:1.0];
>>
>> [NSGraphicsContext restoreGraphicsState];
>
> Drawing into an NSImage is explicitly documented to be thread safe in
> the article you linked to,
I guess I was more concerned with the initWithContentsOfFile:path
> and each thread has its own graphics
> context. The post I linked to does indicate that you might want to
> use [image setCacheMode:NSImageCacheNever]. If your goal is just to
> get an NSBitmapImageRep from a file, it's probably easier just to use
> +imageRepWithContentsOfFile:.
This could work, but as I need to do pixel level manipulation, I really need
to know the exact format of the bitmap and this does not seem to let me
specify it.
Cheers,
Trygve
| Related mails | Author | Date |
|---|---|---|
| Trygve Inda | Mar 29, 14:44 | |
| Jens Alfke | Mar 29, 18:05 | |
| Adam R. Maxwell | Mar 29, 18:54 | |
| Trygve Inda | Mar 29, 20:20 | |
| Adam R. Maxwell | Mar 29, 20:48 | |
| Thomas Engelmeier | Mar 30, 15:10 | |
| Adam R. Maxwell | Mar 30, 17:01 | |
| Trygve Inda | Mar 30, 17:34 | |
| Jens Alfke | Mar 30, 19:02 | |
| glenn andreas | Mar 30, 19:14 | |
| Trygve Inda | Mar 30, 22:21 | |
| glenn andreas | Mar 30, 22:35 | |
| Thomas Engelmeier | Mar 31, 12:30 |






Cocoa mail archive

