我有一些代碼將檢查如果圖像是在手機上還是沒有(這個名字從數據庫被檢索),如果不是,它運行這段代碼:iPhone圖片保存從網絡發出
NSString *urlString = [NSString stringWithFormat: @"http://www.vegashipster.com/%@",image_path];
NSData *imageData = [[NSData alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]];
NSLog(@"saving jpg");
UIImage *image = [[UIImage alloc] initWithData:imageData];//1.0f = 100% quality
[UIImageJPEGRepresentation(image, 1.0f) writeToFile:myFilePath atomically:YES];
NSLog(@"saving image done");
NSLog(@"URL String: %@",urlString);
NSLog(@"http://www.vegashipster.com/%@",image_path);
rest_image = [UIImage imageNamed:image_path];
[image release];
[imageData release];
這段代碼在模擬器上工作得很好,但在iPhone上,屏幕凍結了幾秒鐘(下載圖像,我認爲),然後加載頁面,但沒有可見的圖像。下一次你點擊那個頁面時,沒有凍結。所以我相信該文件正在創建,但它是一個混亂的圖像文件,因此不顯示。
我已經打破了這個代碼,使它運行在它自己的線程中,並且它再次運行在模擬器中。我曾經想過,如果它在幕後運行,圖像數據會變得混亂的可能性會降低,但同樣的事情會發生(減去凍結)。有誰知道我在做什麼這個代碼錯了?感謝您的任何幫助/意見。
編輯
是的,被下載的圖像都嚴格.JPG
編輯2
我看到:
確保你正在寫作g到您的DOCUMENTS目錄,您已經讀取了+寫入權限。否則你不會得到任何文件。
NSString *image_path = [[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 5)] stringByReplacingOccurrencesOfString:@"../"
NSString *myFilePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:image_path];
最後編輯
嗯,我找到了我認爲是我在How can I get a writable path on the iPhone?答案。它幾乎說明我無法將圖像文件保存在構建內的圖像文件所在的位置。如果這是不正確的,請讓我知道,我會嘗試你的方式。
你修好了嗎?發生了什麼?我想我跑了相同的情況。 – Daniel
@丹尼爾我做到了。我只是在下面發佈我的代碼。 – James