Как создать 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?»