【发布时间】:2017-07-19 05:37:18
【问题描述】:
我一直在检查通过 StackOverflow 找到的不同解决方案,但遗憾的是我找不到该问题的解决方案。我基本上需要找到存储在 iPhone 图片库中的图像的大小(以字节、Kb 或其他为单位)。实际上,我需要先验证大小,然后再将其上传到服务器。
所以,我从网上拍了一张 JPEG 图片:
http://static1.uk.businessinsider.com/image/596c82d34af3fa51058b4978-707/david%20slater.jpeg
一旦我把它下载到我的电脑上,当我得到文件信息时,它会说: 大小 80865 字节(磁盘上 82 KB)。因此,我将此文件保存到 iPhone 的图像库中。从图库中获取图像并通过 xCode 检查后,我会看到以下内容:
所以,基本上该文件在我的计算机磁盘上时有 80865 个字节,但当我通过 xcode 检查它时它有 289371 个(根据 NSData 对象的方法长度返回“数据对象包含的字节数”文档)。我错过了什么吗?为什么 iPhone 磁盘中的图像几乎是 iPhone 中存储图像的 4 倍?
我使用的代码是:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSUInteger length = [UIImageJPEGRepresentation(image,1.0f) length];
}
编辑:好的,所以我已经更改了代码以先将图像保存到磁盘并检查大小,然后我使用:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image.png"];
[UIImageJPEGRepresentation(image,1.0f) writeToFile:filePath atomically:YES];
NSError *attributesError;
NSDictionary*fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:&attributesError];
NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
}
所以,如果我打印变量 fileSizeNumber 的值,我会得到:369055(根据文档表明文件的大小以字节为单位)。但是这个数字好像也和原来的80865不相符,居然比原图大了10倍!
【问题讨论】:
-
请将代码作为文本发布在您的问题中,而不是图像。
-
您打印的大小与磁盘上的文件大小完全无关。它们根本不相关。
-
我用的代码基本不多,买我加了。 Tjanks @rmaddy
-
内存中的大小可以并且将不同于磁盘上的大小。先保存到磁盘,然后获取文件大小。
标签: ios objective-c iphone xcode image