-
- unsigned bytes_per_pixel = (CGImageGetBitsPerPixel(image)+7)/8;
-
- CGDataProviderRef dp = CGImageGetDataProvider(image);
- CFDataRef image_data = CGDataProviderCopyData(dp);
- data.data = new char[data.width*data.height*bytes_per_pixel];
- CFDataGetBytes(image_data, CFRangeMake(0, CFDataGetLength(image_data)), reinterpret_cast<UInt8 *>(data.data));
- CFRelease(image_data);
-
- CFRelease(image);
-
- if(alpha==kCGImageAlphaNoneSkipFirst || alpha==kCGImageAlphaNoneSkipLast)
- {
- const char *src = data.data;
- if(alpha==kCGImageAlphaNoneSkipFirst)
- ++src;
- char *dest = data.data;
- for(unsigned y=0; y<data.height; ++y)
- for(unsigned x=0; x<data.width; ++x)
- {
- for(unsigned i=0; i<3; ++i)
- dest[i] = src[i];
- dest += 3;
- src += 4;
- }
- }