NSString从我可以使用的文件中读取时initWithContentsOfFile:usedEncoding:error:,它会猜测文件的编码.
当我从一个创建它时,NSData我唯一的选择是initWithData:encoding:我必须显式传递编码.当我使用NSData而不是文件时,如何可靠地猜测编码?
我需要通过GameKit传输一个整数,sendDataToAllPeers:withDataMode:error:但我不知道如何将我的NSNumber转换为NSData以便发送.我目前有:
NSNumber *indexNum = [NSNumber numberWithInt:index];
[gkSession sendDataToAllPeers:indexNum withDataMode:GKSendDataReliable error:nil];
Run Code Online (Sandbox Code Playgroud)
但很明显,在我发送之前,indexNum需要转换为NSData.有人知道怎么做吗?
谢谢!
我希望以NSData对象的形式直接使用ALAssetsLibrary和ALAsset提取图像.
使用NSURL我以下列方式取出图像.
NSURL *referenceURL =newURL;
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:referenceURL resultBlock:^(ALAsset *asset)
{
UIImage *copyOfOriginalImage = [UIImage imageWithCGImage:[[asset defaultRepresentation] fullResolutionImage]];
}
Run Code Online (Sandbox Code Playgroud)
现在我们将图像作为UIImage,但我需要将图像直接作为NSData.
我希望这样做是因为(我已经读过)一旦你在UIImage中拍摄图像,那么我们就会丢失图像的所有EXIF细节.
这就是我想直接将图像提取为NSData的原因,而不是这样做
NSData *webUploadData=UIImageJPEGRepresentation(copyOfOriginalImage, 0.5);
Run Code Online (Sandbox Code Playgroud)
这一步让我失去了所有的EXIF细节.
请帮忙.
我UIImageView的图像是通过设置的UIImagePicker
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
[picker dismissViewControllerAnimated:YES completion:nil];
self.gImage.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
}
Run Code Online (Sandbox Code Playgroud)
我"尝试"将此图像转换为NSData核心数据并将其保存:
NSData *imageData = UIImagePNGRepresentation(self.gImage.image);
NSString *savedData = [[NSString alloc]initWithData:imageData encoding:NSUTF8StringEncoding];
//am is a pointer to my entities class. imageData is just a NSString attribute
am.imageData = savedData;
NSError *error;
if (![self.managedObjectContext save:&error]) {
//Handle Error
} else {
[self dismissViewControllerAnimated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试将图像加载到一个单独的文件中:
self.cell.gImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:self.myEntity.imageData]]];
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这不起作用.任何帮助是极大的赞赏!
我期待缩减一个UIImage在iOS.
我已经看到了下面的其他问题以及他们如何按尺寸缩小图像的方法.
调整图像大小Objective-C
如何在iphone中以objective-c编程调整图像
大小调整UIImage大小的最简单方法?
这些问题都是基于将图像重新调整为特定大小.在我的情况下,我希望根据最大尺寸重新调整/缩小图像.
例如,我想将最大NSData大小设置为500 KB.我知道我可以像这样得到图像的大小://检查返回图像的大小
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
// Log out the image size
NSLog(@"%lu KB",(imageData.length/1024));
Run Code Online (Sandbox Code Playgroud)
我想做的是这里的某种形式的循环.如果尺寸大于我设置的最大尺寸,我想稍微缩小图像,然后检查尺寸.如果尺寸仍然太大,则再次缩小,然后再次检查,直到它低于最大设定尺寸.
我不确定最好的办法是什么.理想情况下,我不希望始终将图像缩小到特定大小,但每次只能略微缩小图像.这样我可以拥有最大的(大小w/h)图像本身和最大尺寸(字节).如果我一次只略微缩小,那么最好的方法是什么呢?
编辑
要确认,我希望重新调整实际图像的大小,但重新调整图像的大小,使其小于最大NSData长度.例如: -
检查NSData长度
-If高于我想要将UIImage传递给方法
的最大值 - 然后
循环通过此方法每次稍微调整实际图像大小
-Until它在最大NSData长度以下,然后返回图像?
我有一个结构包含一个结构NSObject,我想序列化到一个NSData对象:
struct Packet {
var name: String
var index: Int
var numberOfPackets: Int
var data: NSData
}
var thePacket = Packet(name: name, index: i, numberOfPackets: numberOfPackets, data: packetData)
Run Code Online (Sandbox Code Playgroud)
我如何最好地将数据包序列化为一个NSData,以及如何最好地将其反序列化?
运用
var bufferData = NSData(bytes: & thePacket, length: sizeof(Packet))
Run Code Online (Sandbox Code Playgroud)
只给了我名字和数据的指针.我正在探索NSKeyedArchiver,但后来我必须使Packet成为一个对象,我宁愿保持它的结构.
干杯
聂
使用iPhone SDK,我让用户从图像选择器中选择图像.如果用户选择之前选择的图像,我想让用户知道它.
我的初步计划(目的是确保其他工作正常)是将图像保存到文件(由于其他原因需要这样做),使用NSData的校验和作为文件名.然后,当他们稍后选择相同的图像时,校验和将是相同的,因此我可以看到具有该名称的文件已经存在 - 欢呼!
但是,我已经浏览了互联网和Apple文档,了解如何从NSData计算校验和.我知道我可以实现自己的实现,但如果可能的话,我宁愿避免这种情况.我也很高兴有关如何检查两个UIImages是否相同的其他想法.
编辑
两年前,我承诺了一个代码示例,就在这里.真的很抱歉延误!:)
+(NSString*)imageIdForData:(NSData*)data
{
char* result = (char*) [[data MD5Sum] bytes];
NSString* hash = [NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
result[0], result[1],
result[2], result[3],
result[4], result[5],
result[6], result[7],
result[8], result[9],
result[10], result[11],
result[12], result[13],
result[14], result[15]];
return hash;
}
Run Code Online (Sandbox Code Playgroud) 出于各种原因,我使用NSURLProtocol拦截http请求并从我的应用程序文档目录中的文件加载内容.部分过程涉及加载NSData对象,该对象可以是从html文件到jpeg图像的任何内容.NSURLProtocol需要设置mimetype.
iPhone-SDK中是否有API来确定文件或NSData内容的mimetype?
HI,我有一个名为"myNsData"的NSData对象(它是NSArray的转换形式)和一个名为"myNsArray"的NSarray.任何人都可以为我提供一个代码来将NSData转换为NSArray吗?