2009-07-19 37 views
12

Tôi đang hiển thị các hình ảnh có kích thước rất lớn trong UITableView, vì ứng dụng này của tôi bị lỗi sau một thời gian. Bây giờ tôi muốn thay đổi kích thước hình ảnh và lưu nó vào đĩa. có thể một số giúp tôi thay đổi kích thước hình ảnh từ NSData/UIImage và lưu nó vào đĩa.Lưu hình ảnh vào hộp cát từ UIImage trong iPhone

Tôi nhận được mã để thay đổi kích thước hình ảnh từ UIImage, do đó, kết quả là tôi đã thay đổi kích thước hình ảnh trong đối tượng UIImage, cách lưu nó vào hộp cát iphone.

Cảm ơn,

Trả lời

4

Bạn đang hỏi 'làm cách nào để viết tệp'?

Tôi đoán có một liên lạc phức tạp trong đó bạn có thể muốn ghi vào thư mục Library/Caches, vì vậy khi điện thoại được sao lưu, bạn không lưu các tệp đó.

Lấy thư mục gốc của thư mục ứng dụng w/NSHomeDirectory() và sau đó nối Thư viện/Cache.

Bạn có thể viết NSData vào fs w/a phương pháp trên NSData. Nếu bạn có UIImage, bạn có thể làm UIImageJPEGRepresentation() hoặc UIImagePNGRepresentation để nhận dữ liệu.

+6

Bạn có thể muốn sử dụng NSArray * đường dẫn = NSSearchPathForDirectoriesInDomains (NSCachesDirectory, NSUserDomainMask, YES); NSString * cachesDirectory = [đường dẫn đối tượngAtIndex: 0]; Thay vì tự thêm 'Thư viện/Caches'. –

1

NSData *imgData = UIImageJPEGRepresentation(image, 1);

CGImageSourceRef source = CGImageSourceCreateWithData((CFMutableDataRef)imgData, NULL); 
NSDictionary *metadata = [(NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL)autorelease]; 
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"]; 
[imageMutableData writeToFile:jpgPath atomically:YES]; 

Nó sẽ sao chép hình ảnh của bạn vào thư mục tài liệu trong sandbox với tên Test.jpg.

Nếu bạn muốn làm điều đó cho PNG bạn có thể thử UIImagePNGRepresentation(image);

30

Đây là mã để lưu vào thư mục Documents trên iOS đó là từ mã làm việc.

// Convert UIImage to JPEG 
NSData *imgData = UIImageJPEGRepresentation(image, 1); // 1 is compression quality 

// Identify the home directory and file name  
NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"]; 

// Write the file. Choose YES atomically to enforce an all or none write. Use the NO flag if partially written files are okay which can occur in cases of corruption 
[imgData writeToFile:jpgPath atomically:YES]; 
+0

Câu trả lời thú vị, nó đã giúp tôi. Có đơn giản (một dòng mã) để truy cập lại dữ liệu đó không? Hoặc tôi nên hỏi một câu hỏi khác trên stack? – KKendall

+1

@KKendall bạn chỉ có thể thực hiện '[NSData dataWithContentsOfFile:]' hoặc '[UIImage imageWithContentsOfFile:]' – Liron

+1

JPEG là định dạng bị mất, vì vậy tôi khuyên bạn nên sử dụng UIImagePNGRepresentation để thay thế. Bạn sẽ gặp vấn đề về chất lượng nếu bạn viết/đọc hình ảnh vào/ra đĩa nhiều lần. – user1021430

Các vấn đề liên quan