#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 в файл, как это возможно? есть идеи?