iOS-获取图像尺寸

<h1 style="margin: 0px; font-family: "lucida grande", "lucida sans unicode", lucida, helvetica, "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; line-height: 1.8; color: rgb(47, 47, 47); text-rendering: optimizeLegibility; font-size: 26px;">在执行下述方法之前,我们要先导入头文件 #import <ImageIO/ImageIO.h></h1>
/**
 *  根据图片url获取图片尺寸 
 */
+ (CGSize)getImageSizeWithURL:(id)URL{    
    NSURL * url = nil;    
    if ([URL isKindOfClass:[NSURL class]]) {        
        url = URL;    
    }    
    if ([URL isKindOfClass:[NSString class]]) {        
        url = [NSURL URLWithString:URL];    
    }   
     if (!URL) {        
        return CGSizeZero;  // url不正确返回CGSizeZero    
    }    
    CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)url, NULL);    
    CGFloat width = 0, height = 0;       
    if (imageSourceRef) {        
        CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, NULL);               
        if (imageProperties != NULL) {                       
            CFNumberRef widthNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);          
            if (widthNumberRef != NULL) {                
                CFNumberGetValue(widthNumberRef, kCFNumberFloat64Type, &width);            
            }                       
            CFNumberRef heightNumberRef = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
            if (heightNumberRef != NULL) {
                CFNumberGetValue(heightNumberRef, kCFNumberFloat64Type, &height);
            }
            CFRelease(imageProperties);
        }
        CFRelease(imageSourceRef);    
    }    
    return CGSizeMake(width, height);
}

### 获取 PHPhotoLibrary 图片文件尺寸的 Objective-C 示例代码 在 iOS 中,通过 `PHPhotoLibrary` 可以访问相册中的资源。为了获取图片文件的尺寸(即文件大小),需要结合 `PHAsset` 和 `PHImageManager` 来实现。以下是一个完整的示例代码,展示如何使用 Objective-C 从 `PHPhotoLibrary` 获取图片文件的尺寸。 ```objective-c #import <Photos/Photos.h> - (void)getFileSizeForAsset:(PHAsset *)asset { // 创建一个 PHImageManager 实例 PHImageManager *imageManager = [PHImageManager defaultManager]; // 获取资源的文件 URL PHFetchResult<PHAssetResource *> *resources = [PHAssetResource assetResourcesForAsset:asset]; if (resources.count > 0) { PHAssetResource *resource = resources.firstObject; // 计算文件大小 NSString *fileSizeString = [NSString stringWithFormat:@"%.2f KB", (float)resource.fileSize / 1024.0]; NSLog(@"图片文件尺寸: %@", fileSizeString); } else { NSLog(@"无法找到资源"); } } - (void)fetchAssetsAndGetSize { // 请求权限 [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { if (status == PHAuthorizationStatusAuthorized) { // 获取所有照片 PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init]; fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]]; PHFetchResult<PHAsset *> *assetsFetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions]; // 遍历所有照片并获取文件尺寸 for (PHAsset *asset in assetsFetchResult.objects) { [self getFileSizeForAsset:asset]; } } else { NSLog(@"用户未授权访问相册"); } }]; } ``` #### 代码说明 1. **PHAsset** 是表示相册中资源的对象,可以通过它获取图片的相关信息。 2. **PHAssetResource** 提供了对资源更详细的访问,包括文件大小、文件名等[^1]。 3. **PHImageManager** 是用于加载图像的管理器,在这里我们使用它来辅助获取资源信息。 4. 文件大小通过 `PHAssetResource.fileSize` 属性直接获取,并将其转换为 KB 或其他单位进行显示[^2]。 #### 注意事项 - 在使用 `PHPhotoLibrary` 时,必须确保应用已获得用户的授权。 - 如果目标设备运行的是 iOS 14 或更高版本,可能还需要处理新的隐私权限设置[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值