CFURLRef url = CFURLCreateWithFileSystemPath(NULL, str, kCFURLPOSIXPathStyle, false);
CGImageSourceRef source = CGImageSourceCreateWithURL(url, NULL);
CGImageRef ref = CGImageSourceCreateImageAtIndex(source, 0, NULL);
+ initWithImageRef(ref);
+ CGImageRelease(ref);
+}
+Image::Image(const unsigned char *data, size_t length) {
+ CGDataProviderRef dpRef = CGDataProviderCreateWithData(NULL, data, length, NULL);
+ CGImageRef ref = CGImageCreateWithJPEGDataProvider(dpRef, NULL, false, kCGRenderingIntentDefault);
+ initWithImageRef(ref);
+ CGImageRelease(ref);
+}
+
+void Image::initWithImageRef(CGImageRef ref) {
_width = CGImageGetWidth(ref), _height = CGImageGetHeight(ref);
info = CGImageGetBitmapInfo(ref);
alphaInfo = CGImageGetAlphaInfo(ref);
bitsPerComponent = CGImageGetBitsPerComponent(ref);
dataRef = CGDataProviderCopyData(CGImageGetDataProvider(ref));
- CGImageRelease(ref);
-
}
unsigned char *Image::data() const {