在服务器中,图像以二进制格式存储。我必须使用json在iphone中检索图像。我怎样才能做到这一点?是否有可能使用NSData来做到这一点?如何在服务器中以二进制格式在iPhone中检索图像
-1
A
回答
0
您必须使用json解析从服务器获取二进制值,然后将该字符串转换为NSData。
这是用于将base64字符串转换为NSData的标准代码。
//MBBase64.h
@interface NSData (MBBase64)
+ (id)dataWithBase64EncodedString:(NSString *)string; // Padding '=' characters are optional. Whitespace is ignored.
@end
//MBBase64.m
static const char encodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/";
@implementation NSData (MBBase64)
+ (id)dataWithBase64EncodedString:(NSString *)string;
{
if (string == nil)
[NSException raise:NSInvalidArgumentException format:nil];
if ([string length] == 0)
return [NSData data];
static char *decodingTable = NULL;
if (decodingTable == NULL)
{
decodingTable = malloc(256);
if (decodingTable == NULL)
return nil;
memset(decodingTable, CHAR_MAX, 256);
NSUInteger i;
for (i = 0; i < 64; i++)
decodingTable[(short)encodingTable[i]] = i;
}
const char *characters = [string cStringUsingEncoding:NSASCIIStringEncoding];
if (characters == NULL) // Not an ASCII string!
return nil;
char *bytes = malloc((([string length] + 3)/4) * 3);
if (bytes == NULL)
return nil;
NSUInteger length = 0;
NSUInteger i = 0;
while (YES)
{
char buffer[4];
short bufferLength;
for (bufferLength = 0; bufferLength < 4; i++)
{
if (characters[i] == '\0')
break;
if (isspace(characters[i]) || characters[i] == '=')
continue;
buffer[bufferLength] = decodingTable[(short)characters[i]];
if (buffer[bufferLength++] == CHAR_MAX) // Illegal character!
{
free(bytes);
return nil;
}
}
if (bufferLength == 0)
break;
if (bufferLength == 1) // At least two characters are needed to produce one byte!
{
free(bytes);
return nil;
}
// Decode the characters in the buffer to bytes.
bytes[length++] = (buffer[0] << 2) | (buffer[1] >> 4);
if (bufferLength > 2)
bytes[length++] = (buffer[1] << 4) | (buffer[2] >> 2);
if (bufferLength > 3)
bytes[length++] = (buffer[2] << 6) | buffer[3];
}
realloc(bytes, length);
return [NSData dataWithBytesNoCopy:bytes length:length];
}
@end
然后加载导致的NSData中的UIImageView
yourimageview.image = [[UIImage alloc] initWithData:resultdata];
1
是的,你需要的二进制数据隐蔽到NSData的是这样的:
NSData *imgData = [NSData dataWithBase64EncodedString:yourelement];
UIImage *theImg = [UIImage imageWithData:imgData];
您需要MBBase64类,这是可以在这里:https://github.com/jerrykrinock/CategoriesObjC
相关问题
- 1. 如何在iOS中将图像转换为二进制格式?
- 2. 如何在vb.net中从数据库检索二进制图像并在网格视图中插入图像
- 3. 如何在MATLAB中乘以二进制图像和RGB图像?
- 4. 如何从Android Web服务中检索二进制数据?
- 5. 如何在Python中以二进制格式读取二进制文件?
- 6. 以HTTP格式从HTTP服务器接收二进制数据
- 7. 使用像在sql服务器中查询二进制列
- 8. 二进制图像从服务器加载到图像与JavaScript
- 9. 获取在datagridview中显示图像的二进制格式
- 10. 如何在C++中以二进制格式打包数据
- 11. 我如何可以搜索在二进制格式提供的图像,如果存在我想在GridView的
- 12. C++如何以二进制格式
- 13. 如何在iphone中以JPG或PNG格式保存图像?
- 14. 如何检索服务器中的图像资源位置
- 15. 如何在cakePHP中将图像数据从二进制解码为png格式。
- 16. 可以在Javascript中将图像文件转换为二进制格式。
- 17. 在SQL服务器中追加图像数据类型的二进制数据
- 18. 如何在ASP.NET中使用C#从数据库中检索二进制映像
- 19. 二进制阵列以图像在asp.net
- 20. 在SQl服务器中将十进制转换为HH.MM格式
- 21. Perl-CGI图像在浏览器中以二进制形式显示
- 22. 在julia中读取二进制图像
- 23. 如何在iphone中搜索图像
- 24. 如何从二进制文件中检索整数值在C#
- 25. 如何在Java中使用HttpClient来检索二进制文件?
- 26. java中的二进制搜索猜谜游戏服务器端
- 27. 如何在服务器中存储大量的图像,以方便在html页面中检索?
- 28. 如何从数据库中检索图像(存储的图像是二进制形式)
- 29. 快速查询以检索图像加载的二进制图像?
- 30. Java - 二进制图像像素索引
API后端哪种语言使用php或其他东西 –
你为什么不接受答案?有什么不对吗? – 2014-01-13 05:26:05