الحصول على cgiimageref من nsimage في الكاكاو على ماك OS X

StackOverflow https://stackoverflow.com/questions/1712437

  •  19-09-2019
  •  | 
  •  

سؤال

أحتاج إلى الحصول على cgiimageref من nsimage. هل هناك طريقة سهلة للقيام بذلك في الكاكاو لنظام التشغيل Mac OS X؟

هل كانت مفيدة؟

المحلول

إذا كنت بحاجة إلى استهداف نظام التشغيل Mac OS X 10.5 أو أي إصدار سابق آخر، استخدم المقتطف التالي بدلا من ذلك. إذا لم تكن كذلك، فإن إجابة NSD هي الطريقة الصحيحة للذهاب.

CGImageRef CGImageCreateWithNSImage(NSImage *image) {
    NSSize imageSize = [image size];

    CGContextRef bitmapContext = CGBitmapContextCreate(NULL, imageSize.width, imageSize.height, 8, 0, [[NSColorSpace genericRGBColorSpace] CGColorSpace], kCGBitmapByteOrder32Host|kCGImageAlphaPremultipliedFirst);

    [NSGraphicsContext saveGraphicsState];
    [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:bitmapContext flipped:NO]];
    [image drawInRect:NSMakeRect(0, 0, imageSize.width, imageSize.height) fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0];
    [NSGraphicsContext restoreGraphicsState];

    CGImageRef cgImage = CGBitmapContextCreateImage(bitmapContext);
    CGContextRelease(bitmapContext);
    return cgImage;
}

إذا كانت صورتك تأتي من ملف قد تكون أفضل حالا باستخدام مصدر الصورة لتحميل البيانات مباشرة في cgimageref.

نصائح أخرى

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top