【问题标题】:Nsdata.length return wrong image sizeNsdata.length 返回错误的图像大小
【发布时间】:2014-01-16 11:45:08
【问题描述】:
 NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
 NSString* documentsDirectory = [paths objectAtIndex:0];

 UIImage *imageCaptured=[imagePickerInfo objectForKey:UIImagePickerControllerOriginalImage];

 NSData *imgchekc=UIImageJPEGRepresentation(imageCaptured,1);        
 NSUInteger fileLength = [imgchekc length];
 NSLog(@"Size of Image(bytes):%d %d ",[imgchekc length],fileLength);
  • 嗨,我正在使用此代码来获取限制用户的图像大小(以字节为单位) 上传 >5MB 大小的图片。
  • 但是这段代码给了我 10698536 字节的 4.4MB 图像,这是 错误。请告诉我如何获取实际文件大小。

【问题讨论】:

  • 您是如何通过保存到磁盘找到 4.4MB 的?
  • @Wain 我正在尝试将图像从我的模拟器上传到服务器,所以我知道图像大小。如果大小>5MB,我想显示警报 vie,但我没有得到实际文件大小字节
  • 哪个文件?您没有使用磁盘上的文件数据,因为您使用 UIImageJPEGRepresentation 创建不同的东西...
  • 此代码无法生成“10698536 字节 for 4.4MB”输出。提供真实数据

标签: ios iphone file uiimage nsdata


【解决方案1】:

你需要检查同样的事情。您在磁盘上有一个文件,您可以将其加载到图像中。然后将该图像转换为 JPEG 数据(使用UIImageJPEGRepresentation)。该数据现在与磁盘上的数据没有任何关系(就大小而言)。

如果您只想将文件上传到磁盘上,请不要将其加载到图像中然后转换数据,只需上传即可。要获取文件的大小,您可以使用NSFileManagerattributesOfItemAtPath:error:NSFileSize

如果您想转换为 JPEG,那么您的代码是可以的,您可能不想将 1 用于 compressionQuality,因为这会导致大量数据。试试0.75,看看有什么不同。

【讨论】:

    猜你喜欢
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多