我的iPhone应用程序包(~3000)中有大量的图像文件,我想在运行时确定维度,而不是将这些数据存储在数据库或图像的xml清单中。
有没有办法以编程方式执行此操作?
答案 0 :(得分:0)
UIImage具有返回图像尺寸的尺寸属性,但我不建议在iPhone应用中加载所有3000个图像。在构建时预先生成该信息将为您提供更好的结果。如果你没有对编码文件名中图像大小的图像使用某种命名约定,那么这与将信息存储在某种数据库或XML文件中的情况完全不同;)
答案 1 :(得分:0)
file
Unix实用程序使用文件上的标头信息来确定大小。它基本上需要在文件的第一个块中加载并筛选信息(根据文件类型的不同而不同,但是你可能只有一个实现,因为你控制图像)。
答案 2 :(得分:0)
从iOS 4开始,可以访问图像属性而无需在内存中实际加载图像。
您需要 ImageIO.framework 和 #import<的ImageIO / ImageIO.h> 强>
NSURL *imageFileURL = [NSURL fileURLWithPath:imagePath];
CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)imageFileURL, NULL);
if (imageSource == NULL)
{
// Error loading image ...
}
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], (NSString *)kCGImageSourceShouldCache, nil];
CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, (CFDictionaryRef)options);
NSNumber *mImageWidth;
NSNumber *mImageHeight;
if (imageProperties)
{
mImageWidth = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);
mImageHeight = (NSNumber *)CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
CFRelease(imageProperties);
}