使用圖像
為了便于操作對(duì)象,iOS中定義了圖像類:
UIImage(UIKit框架中定義的圖像類)
CGImage(在Core Graphics框架(或Quartz 2D)中定義的圖像類)
CIImage(Core Image)
以上三者之間可以相互轉(zhuǎn)化。
創(chuàng)建圖像的四種方式
1.從資源文件中直接加載
2.從應(yīng)用程序沙盒目錄加載
3.從云服務(wù)器端獲取
4.從設(shè)備圖片庫(kù)選取或從照相機(jī)抓取
例圖
Swift代碼
import UIKit
let FILE_NAME = "WeChat_1468557469.png"
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
//把資源文件中的圖片復(fù)制到沙河中document目錄下
self.createEditableCopyOfDatabaseIfNeeded()
self.imageView.image = UIImage(named:"WeChat_1468557469.png")
}
func createEditableCopyOfDatabaseIfNeeded() {
// NSFileManager采用單例設(shè)計(jì)模式
let fileManager = NSFileManager.defaultManager()
let writalbeDBPath = applicationDocumentsDirectoryFile()
let dbexits = fileManager.fileExistsAtPath(writalbeDBPath)
//如果文件不存在,則copy一個(gè)圖文到沙盒中
if !dbexits {
}
}
func applicationDocumentsDirectoryFile() -> String {
let documentDirectorys:NSArray = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)
let documetDirectory = documentDirectorys[0] as!String
let path = documetDirectory.stringByAppendingString(FILE_NAME)
return path
}
@IBAction func loadBundle(sender: AnyObject) {
let path = NSBundle.mainBundle().pathForResource("WeChat_1468557469", ofType: "png")
var image = UIImage(contentsOfFile: path!)
self.imageView.image = UIImage(named:"WeChat_1468557469.png")
}
@IBAction func loadSandbox(sender: AnyObject) {
let path = self.applicationDocumentsDirectoryFile()
self.imageView.image = UIImage(contentsOfFile:path)
}
@IBAction func loadWebService(sender: AnyObject) {
NSLog("從云服務(wù)器中加載圖片")
}
}
OC代碼
//對(duì)文件進(jìn)行預(yù)處理,判斷在Documents目錄下是否存在plist文件,如果不存在則從資源目錄下復(fù)制一個(gè)。
-(void)createEditableCopyOfDatabaseIfNeeded
{
NSFileManager *fileManager=[NSFileManager defaultManager];
NSString *writableDBPath=[self applicationDocumentsDirectoryFile];
BOOL dbexits=[fileManager fileExistsAtPath:writableDBPath];
if (!dbexits) {
NSString *defaultDBPath=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Contacts.plist"];
NSError *error;
BOOL success=[fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0,@"錯(cuò)誤寫入文件:‘%@’",[error localizedDescription]);
}
}
}
//獲取放置在沙箱Documents目錄下的文件的完整路徑
-(NSString *)applicationDocumentsDirectoryFile
{
NSString *documentDirectory=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *path=[documentDirectory stringByAppendingPathComponent:@"Contacts.plist"];
return path;
}