IOS-图像处理-查找和加载图像

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.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值