Преобразовать UIImage в NSString (и наоборот)

#iphone #sdk #nsstring #uiimage

#iPhone #sdk #nsstring #uiimage

Вопрос:

Мне нужен метод для преобразования UIImage в NSString, а затем преобразовать NSString обратно в UIImage.

Спасибо.

Комментарии:

1. название изображения? путь? url? данные изображения как base64? Что вы пытаетесь сделать?

Ответ №1:

для >= IOS 7

 - (NSString *)imageToNSString:(UIImage *)image
{
    NSData *imageData = UIImagePNGRepresentation(image);

    return [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}

- (UIImage *)stringToUIImage:(NSString *)string
{
    NSData *data = [[NSData alloc]initWithBase64EncodedString:string
                                                  options:NSDataBase64DecodingIgnoreUnknownCharacters];

    return [UIImage imageWithData:data];
}
  

Ответ №2:

Вместо этого преобразовать его в двоичный поток ( NSData ). Это будет зависеть от формата вашего UIImage . Например, если это формат JPEG / PNG, вы делаете:

 NSData *data1 = UIImageJPEGRepresentation(image, 1.0);
NSData *data2 = UIImagePNGRepresentation(image);
  

ОБНОВЛЕНИЕ: Преобразование двоичных данных в NSString — плохая идея, вот почему у нас есть класс NSData . Операционная система хочет иметь возможность отправлять его в виде потока данных, а затем восстанавливать его снова; NSString для этого не потребуется.

Комментарии:

1. Вы проверили, что сначала получили действительный объект NSData? Представление UIImage* вернет nil, если UIImage находится в неподдерживаемом формате.

2. Изображение является действительным. NSData также допустимы.

3. Я получил действительную NSString, используя [UIImagePNGRepresentation (image) base64Encoding]. Теперь все, что мне нужно, это способ преобразовать NSString в кодировке Base 64 в NSData.

4. Все, что вам нужно, находится в NSString: -dataUsingEncoding: и -initWithData:encoding:

5. Это не работает. Результат UIImage (после преобразования) равен (null).

Ответ №3:

Преобразовать в PNG или JPEG с помощью UIImagePNGRepresentation или UIImageJPEGRepresentation, которые вернут NSData, а затем преобразовать NSData в строку (не уверен, как вы хотите выполнить это сопоставление). Как насчет того, чтобы просто разобраться с NSData? Вы можете прочитать / записать это в файл.

Комментарии:

1. Я не хочу записывать на диск, потому что задержка ввода-вывода слишком высока.

2. Я хочу записать строку и nsdata в файл, как это возможно? есть идеи?