Iphone 支持以下图像类型: PNG, JPG, THM, JPEG, TIF, TIFF, GIF, BMP, BMPF, ICO, CUR, XBM, PDF.
1.从应用程序包中加载图像
myImage = [UIImage imageNamed:@"icon.png" ];
NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType"@"png" ];
myImage = [UIImage imageWithContentsOfFile:path];
|
2.从沙盒中加载图像
查找Documents文件夹的标准方法:
NSArray *paths = [NSSearchPathForDirectoriesIndomains( NSDocumentDirectory, NSUserDomainMask, YES ) ];
return [paths lastObject];
NSString *documentsFolder()
{
return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents" ];
}
|
如果要加载图像,将图像文件名添加刀返回的路径中,并告诉UIImage使用这些内容创建一副新图像.
下面代码是从顶层文档文件夹中加载一个名为image.png 的文件,然后返回由该数据初始化的一个UIImage 实例.
1
2
|
path = [documentsFolder( ) stringByAppendingPathComponent:@"image.png"];
return [UIImage imageWithContentsOfFile:path];
|
3.从URL中加载图像
UIImage类可以直接从NSData实例中加载图像.但是他不能直接从URL字符串或者NSURL对象加载图像.
所以,只能使用相关数据创建新图像.
eg:
NSURL *url = [NSURL URLWithString:@" http://www.baidu.com/image/image.png"];
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
|
可以用一个简单的方法来处理这个过程,只需提供一个可获取UIImage的URL字符串即可.
下面的方法接受一个参数,即一个URL字符串
+ (UIImage *) imageFromURLString: (NSString *)urlstring
{
//This call is synchronous and blocking
return [UIImage imageWithData:[NSData dataWithContentsOfURL:[ NSURL URLWithString:urlstring ]]];
}
|
4.从相册加载数据
UIImagePickerController 类帮主用户从Iphone相册中选择图像.
二.加载图像文件
//-------------------
//ImageHelper-Files.h 文件
//--------------------
#import <UIKit/UIKit.h>
@interface ImageHelper : NSObject
@end
@interface ImageHelper (Files)
+ (UIImage *) imageNamed: (NSString *) aName;
+ (UIImage *) imageFromURLString: (NSString *) urlstring;
+ (NSArray *) DCIMImages;
+ (UIImage *) DCIMImageNamed: (NSString *) aName;
@end
//-------------------
//ImageHelper-Files.m 文件
//--------------------
#import "ImageHelper-Files.h"
@implementation ImageHelper
@end
NSString *documentsFolder()
{
return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
}
NSString *bundleFolder()
{
return [[NSBundle mainBundle] bundlePath];
}
NSString *DCIMFolder()
{
return [NSHomeDirectory() stringByAppendingPathComponent:@"../../Media/DCIM"];
}
@implementation ImageHelper (Files)
+ (NSString *) pathForItemNamed: (NSString *) fname inFolder: (NSString *) path
{
NSString *file;
NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:path];
while (file = [dirEnum nextObject])
if ([[file lastPathComponent] isEqualToString:fname])
return [path stringByAppendingPathComponent:file];
return nil;
}
// Searches bundle first then documents folder
+ (UIImage *) imageNamed: (NSString *) aName
{
NSString *path = [ImageHelper pathForItemNamed:aName inFolder:bundleFolder()];
path = path ? path : [ImageHelper pathForItemNamed:aName inFolder:documentsFolder()];
if (!path) return nil;
return [UIImage imageWithContentsOfFile:path];
}
+ (UIImage *) imageFromURLString: (NSString *) urlstring
{
NSURL *url = [NSURL URLWithString:urlstring];
return [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
}
+ (NSArray *) DCIMImages
{
NSString *file;
NSMutableArray *results = [NSMutableArray array];
NSDirectoryEnumerator *dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:DCIMFolder()];
while (file = [dirEnum nextObject]) if ([file hasSuffix:@"JPG"]) [results addObject:file];
return results;
}
+ (UIImage *) DCIMImageNamed: (NSString *) aName
{
NSString *path = [ImageHelper pathForItemNamed:aName inFolder:DCIMFolder()];
return [UIImage imageWithContentsOfFile:path];
}
@end
//-------------------
TestBedViewController.h 文件
//--------------------
#import <UIKit/UIKit.h>
#import "ImageHelper-Files.h"
#define COOKBOOK_PURPLE_COLOR [UIColor colorWithRed:0.20392f green:0.19607f blue:0.61176f alpha:1.0f]
#define BARBUTTON(TITLE, SELECTOR) [[[UIBarButtonItem alloc] initWithTitle:TITLE style:UIBarButtonItemStylePlain target:self action:SELECTOR] autorelease]
#define SETIMAGE(X) [(UIImageView *)self.view setImage:X]
const int NUM_OPTIONS = 4;
int which = 0;
@interface TestBedViewController : UIViewController
@end
@implementation TestBedViewController
- (void) action: (id) sender
{
switch (which)
{
case 0:
// Load image from web
self.title = @"URL-based image";
SETIMAGE([ImageHelper imageFromURLString:@"http://image.weather.com/images/maps/current/curwx_600x405.jpg"]);
break;
case 1:
// use UIImage's imageNamed: with caching
self.title = @"imageNamed:";
SETIMAGE([UIImage imageNamed:@"BFlyCircle.png"]);
break;
case 2:
// Use the Image Helper version of imageNamed:
self.title = @"Image Helper";
SETIMAGE([ImageHelper imageNamed:@"icon.png"]);
break;
case 3:
// Load normal background image from bundle
self.title = @"Contents of file";
SETIMAGE([UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"cover320x416" ofType:@"png"]]);
break;
default:
break;
}
NSString *next = [NSString stringWithFormat:@"Example %d", (which = (which + 1) % NUM_OPTIONS) + 1];
self.navigationItem.rightBarButtonItem = BARBUTTON(next, @selector(action:));
}
- (void) viewDidLoad
{
self.navigationController.navigationBar.tintColor = COOKBOOK_PURPLE_COLOR;
self.navigationItem.rightBarButtonItem = BARBUTTON(@"Example 1", @selector(action:));
}
@end
Iphone 支持以下图像类型: PNG, JPG, THM, JPEG, TIF, TIFF, GIF, BMP, BMPF, ICO, CUR, XBM, PDF.