當我下載一個圖像使用sdwebimage,我在圖像下載操作的- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
爲什麼UIImagePNGRepresentation返回大於數據(10倍以上)圖像的原始數據大小
UIImage *image = [UIImage sd_imageWithData:self.imageData];
NSString *key = [[SDWebImageManager sharedManager] cacheKeyForURL:self.request.URL];
image = [self scaledImageForKey:key image:image];
NSLog(@"didCompleteWithError:%@ data lenght:%ld png::%ld,jpg:%ld",self.request.URL,[self.imageData length],[UIImagePNGRepresentation(image) length],[UIImageJPEGRepresentation(image, 1) length]);
日誌打印原來是
data lenght:163480 png::202498,jpg:131774
和原始數據長度是與服務器中的圖像文件的確切文件大小,但是當我使用這些原始數據創建圖像,並使用UIImagePNGRepresentation或UIImageJPEGRepresentation獲取UIImage的NSData長度時,似乎p UIImage的ng和jpg表示(不壓縮)將會更大。是什麼讓這發生?
那麼爲什麼圖像的png圖像會比圖像的rawdata大? – ximmyxiao
JPEG和PNG使用完全不同的壓縮方法。 JPEG使用基於DCT的有損壓縮方法,以犧牲質量來支持更小的文件大小。 PNG優先考慮質量並使用無損DEFLATE壓縮算法。 JPEG的文件大小可以通過在保存期間調整圖像的質量百分比來減少,而PNG的文件大小不易調整,並且通常需要單獨的程序來進一步壓縮圖像。 檢查這個 - http://www.diffen。com/difference/JPEG_vs_PNG –
是否有任何方法可以獲得uiimage對象的原始數據內容長度?因爲UIImagePNGRepresentation或UIImageJPEGRepresentation工作不正常 – ximmyxiao