On 18 Aug 2013, at 21:03, Tom Davie <tom.da...@gmail.com> wrote:

> 
> On 18 Aug 2013, at 15:56, Gerriet M. Denkmann <gerr...@mdenkmann.de> wrote:
> 
>> 
>> On 18 Aug 2013, at 20:09, Tom Davie <tom.da...@gmail.com> wrote:
>> 
>>> 
>>> On 18 Aug 2013, at 15:03, Gerriet M. Denkmann <gerr...@mdenkmann.de> wrote:
>>> 
>>>> I just noticed that the program I use to create Png files creates files 
>>>> with twice the number of pixels in each dimension.
>>>> Obviously because since I last used it, I have switched to a Retina Mac 
>>>> Book.
>>>> 
>>>> Ok, so I have to fix this program.
>>> 
>>> The correct way to fix this problem is to create an image via 
>>> CGContextCreate and CGContextCreateImage.  When doing this you specify 
>>> pixel rather than point dimensions, and do not have the issue you’re 
>>> experiencing.  You detect a retina device by testing scaleFactor as you 
>>> suggested, it’s just unnecessary here.
>> 
>> I just asked Xcode about CGContextCreate and it told me that there is 
>> absolutely no information available.
>> Could anybody help me with some link to some documentation?
> 
> Uhh sorry, my bad, I meant CG*Bitmap*ContextCreate…
> 
> http://developer.apple.com/library/ios/documentation/graphicsimaging/Reference/CGBitmapContext/Reference/reference.html

Ah, now I found lots of info!

But I do not understand it. CIImage, CGImage, NSImage, UIImage... This is just 
too much for my small brain.

I removed:
                finalWidth /= 2;        //      Retina Fix 18.Aug. 2013
and replaced:
                NSImage *image = [[NSImage alloc] initWithSize: sizE];
by:
size_t pixelsWide = (size_t)sizE.width; 
size_t pixelsHigh = (size_t)sizE.height; 
size_t bitmapBytesPerRow = pixelsWide * 4; 
CGColorSpaceRef colorSpace = 
CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); 
                
CGContextRef c = CGBitmapContextCreate ( NULL, pixelsWide, pixelsHigh, 8, 
bitmapBytesPerRow, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedLast); 
CGImageRef cgImage = CGBitmapContextCreateImage ( c ); 
NSImage *image = [[NSImage alloc] initWithCGImage: cgImage size: NSZeroSize ]; 
(ignoring leaks for the time being)
... and then continued with my old code.

The png is still 100 pixels wide.

You see, I am rather clueless.

Kind regards,

Gerriet.


_______________________________________________

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