分享

IOS

 现在决定明天 2014-04-03

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./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.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多