【发布时间】:2011-11-09 11:44:33
【问题描述】:
我正在创建一个将图像上传到服务器的应用程序。它必须在 XML 上发送字节数组。如何将字节数组放入 NSString?
谢谢!
【问题讨论】:
标签: iphone sdk nsstring uiimage bytearray
我正在创建一个将图像上传到服务器的应用程序。它必须在 XML 上发送字节数组。如何将字节数组放入 NSString?
谢谢!
【问题讨论】:
标签: iphone sdk nsstring uiimage bytearray
您可以将 UIImage 转换为 NSData 对象,然后从那里提取字节数组。下面是一些示例代码:
UIImage *image = [UIImage imageNamed:@"image.png"];
NSString *byteArray = [UIImagePNGRepresentation(image) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
如果您使用的是 PNG 图像,您可以使用如上所示的 UIImagePNGRepresentation 函数,或者如果您使用的是 JPEG 图像,您可以使用 UIImageJPEGRepresentation 函数。文档可在UIImage Class Reference
上获得【讨论】:
使用NSData *data = UIImagePNGRepresentation(image); 可以将图像转换为数据,现在可以使用getBytes:length: 或getBytes:range: 将数据转换为字节
【讨论】:
这里有一个简单的iOS从UIImage转换为unsigned char*字节数组的函数-->
+ (unsigned char*)UIImageToByteArray:(UIImage*)image; {
unsigned char *imageData = (unsigned char*)(malloc( 4*image.size.width*image.size.height));
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGImageRef imageRef = [image CGImage];
CGContextRef bitmap = CGBitmapContextCreate( imageData,
image.size.width,
image.size.height,
8,
image.size.width*4,
colorSpace,
kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
CGContextDrawImage( bitmap, CGRectMake(0, 0, image.size.width, image.size.height), imageRef);
CGContextRelease( bitmap);
CGColorSpaceRelease( colorSpace);
return imageData;
}
【讨论】: