Как создать CGImageRef из строковых данных NSData (НЕ UIImage)

Как создать новый CGImageRef без UIImage? Я не могу использоватьimage.CGImage

Я получаю изображение в кодировке base64 в виде std :: string от процесса сервера. Первая часть кода ниже имитирует получение закодированной строки.

- (UIImage *)testChangeImageToBase64String
{
    UIImage *processedImage = [UIImage imageNamed:@"myFile.jpg"];

    // UIImage to unsigned char *
    CGImageRef imageRef = processedImage.CGImage;
    NSData *data = (NSData *) CFBridgingRelease(CGDataProviderCopyData(CGImageGetDataProvider(imageRef)));

    // encode data to Base64 NSString
    NSString *base64EncodedDataString = [data base64EncodedStringWithOptions:0];
    // create encoded std::string
    std::string encoded([base64EncodedDataString UTF8String]);


    // ***************************************************************************
    // This is where we call the server method and receive the bytes in a std::string
    std::string received = encoded;
    // ***************************************************************************


    // get Base64 encoded std::string into NSString
    NSString *base64EncodedCstring = [NSString stringWithCString:encoded.c_str() encoding:[NSString defaultCStringEncoding]];

    // NSData from the Base64 encoded std::string
    NSData *nsdataFromBase64String = [[NSData alloc]initWithBase64EncodedString:base64EncodedCstring options:0];

Все хорошо !!!! ..... пока я не попробую заселить новый имидж.

Когда я получаю закодированную строку, мне нужно получитьCGImageRef вернуть данные в правильный формат для заполнения UIImage.Если данные не в правильном формате, UIImage будет ноль.

Мне нужно создать новый CGImageRef с nsdataFromBase64String.

Что-то вроде:

    CGImageRef base64ImageRef = [newCGImageRefFromString:nsdataFromBase64String];

Затем я могу использовать imageWithCGImage, чтобы поместить данные в новый UIImage.

Что-то вроде:

    UIImage *imageFromImageRef = [UIImage imageWithCGImage: base64ImageRef];

Тогда я могу вернуть UIImage.

    return newImage;
}

Обратите внимание, что следующая строка НЕ ​​будет работать:

    UIImage *newImage = [[UIImage alloc] initWithData:nsdataFromBase64String];

Данные должны быть в правильном формате, иначе UIImage будет нулевым. Отсюда мой вопрос: «Как мне создать CGImageRef с NSData?»

Ответы на вопрос(1)

Ваш ответ на вопрос