gpt4 book ai didi

ios4 - iOS : how to get image dimensions without opening it

转载 作者:行者123 更新时间:2023-12-04 04:14:26 25 4
gpt4 key购买 nike

在 iOS 应用程序中,我需要根据它们的大小(宽度/高度)提供图像过滤器,想想类似于谷歌图像搜索中的“大、中、小”的东西。在创建列表时打开每个图像并读取其尺寸会非常耗费性能。有没有办法在不打开图像本身的情况下获取这些信息?

Damien DeVille 根据他的建议回答了以下问题,我现在使用以下代码:

NSURL *imageURL = [NSURL fileURLWithPath:imagePath];
if (imageURL == nil)
return;

CGImageSourceRef imageSourceRef = CGImageSourceCreateWithURL((CFURLRef)imageURL, NULL);
if(imageSourceRef == NULL)
return;

CFDictionaryRef props = CGImageSourceCopyPropertiesAtIndex(imageSourceRef, 0, NULL);
CFRelease(imageSourceRef);

NSLog(@"%@", (NSDictionary *)props);

CFRelease(props);

最佳答案

您可以使用 ImageIO 来实现这一点。

如果你有你的图像 URL(或者从文件路径创建一个带有 +fileURLWithPath 在 NSURL 上的 URL)你可以用 CGImageSourceCreateWithURL 创建一个图像源(你必须将 URL 桥接到 CFURLRef)。

获得图像源后,您可以通过调用 CGImageSourceCopyPropertiesAtIndex 获得图像属性的 CFDictionaryRef(您可以再次将其桥接到 NSDictionary)。你得到的是一个包含大量关于图像的属性的字典,包括像素高度和像素宽度。

您可以传递 0 作为索引。索引是因为某些图像可能具有各种嵌入图像(例如缩略图或 gif 中的多帧)。

请注意,通过使用图像源,不必将完整图像加载到内存中,但您仍然可以访问其属性。

让您导入并将框架添加到您的项目中。

关于ios4 - iOS : how to get image dimensions without opening it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com