2014-02-28 79 views
0

做類似NSData - > UIImage - > NSData?

NSData *originalImageData = [NSData dataWithContentsOfFile:@"somefolder\somepicture.jpg"]; 
UIImage *theImage = [UIImage imageWithData:originalImageData]; 

後有沒有什麼辦法讓實際的NSData從UIImage對象回來?

功能

NSData *newImageData = UIImageJPEGRepresentation(theImage, 1.0); 

不返回相同NSData的,我相信這是由於壓縮(或缺乏)。我想這可能適用於.png文件(不壓縮),但.png更大,不適合用於我正在做的事情。

最後,我大多隻是在尋找一種方法,使

[newImageData isEqualToData:originalImageData] 

評估爲true。

+3

你爲什麼想要這樣做?爲什麼不只是存儲原始數據,如果這是你以後需要的? –

+0

最好你會得到一個與原始圖像質量相同的圖像文件。除特殊情況外,沒有實際的方法可以接近生成相同的文件。 (如果你想比較圖像,比較圖像,而不是文件。即使這樣,有可能會有一些不匹配,但你可以使用比較方案,容忍細微的差異。) –

回答

0

也許它可以更好地存儲哈希(MD5 )的圖像,並比較2哈希...你可以創建一個MD5UIImage繼承UIImage的屬性來存儲MD5 + NSData + MD5類別來計算MD5 ...谷歌「NSDATA + MD5」的例證。 ..

0

爲什麼即使用dataWithContentsOfFile?只需使用imageNamed:爲:

// Returns the image object associated with the specified filename. 

+ (UIImage *)imageNamed:(NSString *)name 

,如:

{ 
    UIImage *theImage = [UIImage imageNamed: @"somepicture.jpg"] 
    // … 
} 

,你需要確保你的圖像文件是在主束。你也得到了:

// Creates and returns an image object by loading the image data from the file at the specified path. 

+ (UIImage *)imageWithContentsOfFile:(NSString *)path 

這大概放鬆了'主要捆綁'的限制。

相關問題