代码之家  ›  专栏  ›  技术社区  ›  Ovi Tisler

如何从文件中获取cgimageref?

  •  11
  • Ovi Tisler  · 技术社区  · 15 年前

    所以我知道你可以 CGImage 从使用uiimage的文件…

    UIImage *img = [UIImage imageNamed:@"name.bmp"];
    [img CGImage];
    

    但是,有没有办法 CGImageRef 不使用 UIImage ?

    (我在一个静态库中尝试这个,这个库不能访问uikit)如果需要的话,我可以使用其他框架,只是不能使用uikit。会 CIImage 工作?或 NSBitmapImageRep ?

    2 回复  |  直到 10 年前
        1
  •  19
  •   Tom Irving    15 年前

    您可以从nsdata获取:

    CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((CFDataRef)[NSData dataWithContentsOfFile:@""]);
    CGImageRef image = CGImageCreateWithPNGDataProvider(imgDataProvider, NULL, true, kCGRenderingIntentDefault); // Or JPEGDataProvider
    

    您必须确定数据是jpeg或png才能正常工作。

        2
  •  1
  •   gerram    10 年前

    您必须了解使用[uiimage imagenamed:@“name.bmp”]可以通过uikit框架工作。这不是线程安全的。例如dispatch_apply必须使用quartz框架。

    // Through Quartz
    NSString *maskFilePath = [[NSBundle mainBundle] pathForResource:@"mask" ofType:@"png"];
    CGDataProviderRef dataProvider = CGDataProviderCreateWithFilename([maskFilePath UTF8String]);
    CGImageRef maskRef = CGImageCreateWithPNGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault);