利用UIImageJPEGRepresentation與UIGraphicsBeginImageContext進行圖片壓縮的簡單比較

利用UIImageJPEGRepresentation與UIGraphicsBeginImageContext進行圖片壓縮的簡單比較

UIImage *image01 = [UIImage imageNamed:@"002.png"];//原圖

NSData *dataOf02 =UIImageJPEGRepresentation(image01, 0.5);//壓縮圖片內容,不影響圖片的size,得到一個原大小,但更模糊的圖片。
UIImage *image02 = [UIImage imageWithData:dataOf02];//壓縮圖02

UIImage *image03 = [self makeThumbnailFromImage:image01 scale:0.5];//壓縮圖03
NSLog(@"001===%@",NSStringFromCGSize(image01.size));
NSLog(@"002===%@",NSStringFromCGSize(image02.size));
NSLog(@"003===%@",NSStringFromCGSize(image03.size));

NSData *data001 = UIImageJPEGRepresentation(image01, 1.0);
NSData *data002 = UIImageJPEGRepresentation(image02, 1.0);
NSData *data003 = UIImageJPEGRepresentation(image03, 1.0);

NSLog(@"002.lenght===%d",data001.length);
NSLog(@"002.lenght===%d",data002.length);
NSLog(@"003.lenght===%d",data003.length);

//看一下效果
UIImageView *imageView01 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, image01.size.width, image01.size.height)];
imageView01.image = image01;
[self.view addSubview:imageView01];

UIImageView *imageView02 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 100, image02.size.width, image02.size.height)];
imageView02.image = image02;
[self.view addSubview:imageView02];

UIImageView *imageView03 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 200, image03.size.width, image03.size.height)];
imageView03.image = image03;
[self.view addSubview:imageView03];



<pre code_snippet_id="354748" snippet_file_name="blog_20140520_2_9026597" name="code" class="objc" style="border: 1px solid rgb(255, 255, 204); background-color: rgb(255, 255, 252); font-family: 'Courier New'; overflow: auto; font-size: 16px; line-height: 24px;">//手動實現圖片壓縮,可以寫到分類裏,封裝成常用方法。按照大小進行比例壓縮,改變了圖片的size。
- (UIImage *)makeThumbnailFromImage:(UIImage *)srcImage scale:(double)imageScale {
    UIImage *thumbnail = nil;
    CGSize imageSize = CGSizeMake(srcImage.size.width * imageScale, srcImage.size.height * imageScale);
    if (srcImage.size.width != imageSize.width || srcImage.size.height != imageSize.height)
    {
        UIGraphicsBeginImageContext(imageSize);
        CGRect imageRect = CGRectMake(0.0, 0.0, imageSize.width, imageSize.height);
        [srcImage drawInRect:imageRect];
        thumbnail = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }
    else
    {
        thumbnail = srcImage;
    }
    return thumbnail;
}


發佈了44 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章