2011-02-22 36 views
10

我寫這樣的.jpg文件到我的應用程序的文件目錄開始:的iOS UIImageJPEGRepresentation錯誤:沒有一個JPEG文件:使用0xff 0xd9

NSData *img = UIImageJPEGRepresentation(myUIImage, 1.0); 
BOOL retValue = [img writeToFile:myFilePath atomically:YES]; 

後來,我加載圖像回用一個UIImage:

UIImage *myImage = [UIImage imageWithContentsOfFile:path]; 

我知道它的工作原理,因爲我可以在表格單元格中繪製圖像,並且很好。現在,如果我嘗試使用UIImageJPEGRepresentation(MYIMAGE,1.0),調試器打印出這些行:

<Error>: Not a JPEG file: starts with 0xff 0xd9 
<Error>: Application transferred too few scanlines 

,函數返回零。有人知道爲什麼會發生這種情況嗎?加載後我沒有做任何操作UIImage數據的操作。我只是將UIImage提供給單元格中的圖像視圖。我設置了圖像視圖屬性,使單元格中的所有圖像排列並且大小相同,但我認爲這與將UIImage轉換爲NSData無關。

+0

只是出於興趣,以消除錯誤信息:你設置的東西*等* 1.0的壓縮值試過這種這兩個電話(例如0.5?)。 – lxt 2011-02-22 17:05:53

+0

圖像已損壞。 JPEG圖像應以0xFF 0xD9結尾。你如何構建`myImage`? – 2011-02-22 17:13:15

回答

20

圖像沒有損壞,我能夠正確顯示它們。該問題可能是UIImage中的一個錯誤,或者文檔應該更清楚地使用imageWithContentsOfFile :.

我能夠通過改變

UIImage *myImage = [UIImage imageWithContentsOfFile:path]; 

NSData *img = [NSData dataWithContentsOfFile:path]; 
UIImage *photo = [UIImage imageWithData:img]; 
相關問題