![](/img/trans.png)
[英]How do you get image file name from UIImagePickerController?
[英]How can I get image file size which selected by UIImagePickerController?
我想知道由UIImagePickerController選擇的IPhone PhotoAlbum中的圖像文件大小。
我用1,571,299字節的jpeg圖像嘗試了這段代碼。
UIIamge *selectedImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
NSData *imageData;
if ( /* PNG IMAGE */ )
imageData = UIImagePNGReprensentation(selectedImage);
else
imageData = UIImageJPEGReprensentation(selectedImage);
NSUInteger fileLength = [imageData length];
NSLog(@"file length : [%u]", fileLength);
但是當我運行代碼時,它打印362788字節。
有誰知道這件事?
如果您有這樣的代碼來拍照:
UIImagePickerController *controller = [[[UIImagePickerController alloc] init] autorelease];
controller.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
controller.delegate = self;
[self presentModalViewController:controller animated:YES];
然后,您可以通過以下方式檢索所選圖像的文件大小:
NSURL *assetURL = [info objectForKey:@"UIImagePickerControllerReferenceURL"];
ALAssetsLibrary *library = [[[ALAssetsLibrary alloc] init] autorelease];
[library assetForURL:assetURL resultBlock:^(ALAsset *asset) {
NSLog(@"Size: %lld", asset.defaultRepresentation.size);
} failureBlock:nil];
如果源類型是UIImagePickerControllerSourceTypeCamera
,則必須在檢索文件大小之前將內存映像保存到磁盤。
正如一些評論者所說,即使我們假設方法是正確的,你仍然會重新處理圖像,因此字節大小將不匹配。 我對JPG圖像使用以下方法,對PNG使用ymmv:
+ (NSInteger)bytesInImage:(UIImage *)image {
CGImageRef imageRef = [image CGImage];
return CGImageGetBytesPerRow(imageRef) * CGImageGetHeight(imageRef);
}
正如評論者指出的那樣,上述內容確實會返回未壓縮的大小。
這是在Swift 4中
extension UIImage {
var memorySize: Int {
guard let imageRef = self.cgImage else { return 0 }
return imageRef.bytesPerRow * imageRef.height
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.