如何获得从`UIImagePickerController`接收到的图像的压缩文件大小?

我想知道通过camara或库的UIImagePickerController的图像的大小。 有什么方法可以find?

要求是这样的,

如果图像大小超过1 MB比我想压缩它。

提前致谢。

尝试这个:

 CGFloat compression = 0.8f; CGFloat maxCompression = 0.1f; int maxFileSize = 1024; UIImage *img =[UIImage imageNamed:@"anyimg.jpg"]; NSData *imageData = UIImageJPEGRepresentation(img, compression); while ([imageData length] > maxFileSize && compression > maxCompression) { compression -= 0.1; imageData = UIImageJPEGRepresentation(img, compression); NSLog(@"%d",[imageData length]); } NSLog(@"image size %d",[imageData length]); 

为得到图像大小:
NSData *data_size = UIImagePNGRepresentation(yourImage);
int image_size =[data_size length];

可能这个代码适合你。 它不像字节或MB那样大小的图像。 但是这个代码会根据您的自定义尺寸(如100×200)为您提供图像。

 @implementation UIImage (CS_Extensions) - (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize { UIImage *sourceImage = self; UIImage *newImage = nil; CGSize imageSize = sourceImage.size; CGFloat width = imageSize.width; CGFloat height = imageSize.height; CGFloat targetWidth = targetSize.width; CGFloat targetHeight = targetSize.height; CGFloat scaleFactor = 0.0; CGFloat scaledWidth = targetWidth; CGFloat scaledHeight = targetHeight; CGPoint thumbnailPoint = CGPointMake(0.0,0.0); if (CGSizeEqualToSize(imageSize, targetSize) == NO) { CGFloat widthFactor = targetWidth / width; CGFloat heightFactor = targetHeight / height; if (widthFactor < heightFactor) scaleFactor = widthFactor; else scaleFactor = heightFactor; scaledWidth = width * scaleFactor; scaledHeight = height * scaleFactor; // center the image if (widthFactor < heightFactor) { thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; } else if (widthFactor > heightFactor) { thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; } } // this is actually the interesting part: UIGraphicsBeginImageContext(targetSize); CGRect thumbnailRect = CGRectZero; thumbnailRect.origin = thumbnailPoint; thumbnailRect.size.width = scaledWidth; thumbnailRect.size.height = scaledHeight; [sourceImage drawInRect:thumbnailRect]; newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); if(newImage == nil) NSLog(@"could not scale image"); return newImage ; } @end 

如果你有一个path,你可以问文件pipe理器:

 attributesOfItemAtPath:error: 

关键的'NSFileSize'是你在字典中寻找的。

如果你有一个像jinx说的道路,你可以做到这一点

 NSNumber *theFileSize = [NSNumber numberWithInt:0]; NSFileManager * filemanager = [NSFileManager defaultManager]; if([filemanager fileExistsAtPath:fullFilePath]) { NSDictionary * attributes = [filemanager attributesOfItemAtPath:fullFilePath error:nil]; theFileSize = [attributes objectForKey:NSFileSize]; } [self convertbyteToKB_MB:[theFileSize intValue]; 

 -(NSString*)convertbyteToKB_MB:(int)byte { NSString *retSize = [NSString stringWithFormat:@"%d bytes",byte]; float fByte = byte; if (byte > 1024) { //Kilobytes fByte = fByte / 1024; retSize = [NSString stringWithFormat:@"%.1f KB",fByte]; } if (fByte > 1024) { //Megabytes fByte = fByte / 1024; retSize = [NSString stringWithFormat:@"%.1f MB",fByte]; } return retSize; }