国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

ios中圖像進行壓縮方法匯總

2019-10-21 18:57:44
字體:
來源:轉載
供稿:網友
在Iphone上有兩種讀取圖片數據的簡單方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函數需要兩個參數:圖片的引用和壓縮系數.而UIImagePNGRepresentation只需要圖片引用作為參數.
 

方法一:

 

復制代碼代碼如下:

- (UIImage*)scaleFromImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
 CGSize imageSize = image.size;
 CGFloat width = imageSize.width;
 CGFloat height = imageSize.height;
      
 if (width <= newSize.width && height <= newSize.height){
  return image;
 }
      
 if (width == 0 || height == 0){
  return image;
 }
      
 CGFloat widthFactor = newSize.width / width;
 CGFloat heightFactor = newSize.height / height;
 CGFloat scaleFactor = (widthFactor<heightFactor?widthFactor:heightFactor);
      
 CGFloat scaledWidth = width * scaleFactor;
 CGFloat scaledHeight = height * scaleFactor;
 CGSize targetSize = CGSizeMake(scaledWidth,scaledHeight);
      
    UIGraphicsBeginImageContext(targetSize);
    [image drawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

 

方法二:

.h具體code

復制代碼代碼如下:

#import <Foundation/Foundation.h>  
@interface UIImage (UIImageExt)  
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size;  
- (UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize;  
@end  

 

.m具體code

 

復制代碼代碼如下:

#import "UIImageExt.h"  
@implementation UIImage (UIImageExt)  
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{  
    // 創建一個bitmap的context  
    // 并把它設置成為當前正在使用的context  
    UIGraphicsBeginImageContext(size);  
    // 繪制改變大小的圖片  
    [img drawInRect:CGRectMake(0, 0, size.width, size.height)];  
    // 從當前context中創建一個改變大小后的圖片  
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();  
    // 使當前的context出堆棧  
    UIGraphicsEndImageContext();  
    // 返回新的改變大小后的圖片  
    return scaledImage;  
}  
- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize  
{  
    UIImage *sourceImage = self;  
    UIImage *newImage = nil;  
    CGSize imageSize = sourceImage.size;  
    CGFloat width = imageSize.width;  
    CGFloat height = imageSize.height;  
    CGFloat targetWidth = targetSize.width;  
    CGFloat targetHeight = targetSize.height;  
    CGFloat scaleFactor = 0.0;  
    CGFloat scaledWidth = targetWidth;  
    CGFloat scaledHeight = targetHeight;  
    CGPoint thumbnailPoint = CGPointMake(0.0,0.0);  
    if (CGSizeEqualToSize(imageSize, targetSize) == NO)  
    {  
        CGFloat widthFactor = targetWidth / width;  
        CGFloat heightFactor = targetHeight / height;  
        if (widthFactor > heightFactor)  
            scaleFactor = widthFactor; // scale to fit height  
        else  
            scaleFactor = heightFactor; // scale to fit width  
        scaledWidth  = width * scaleFactor;  
        scaledHeight = height * scaleFactor;  
        // center the image  
        if (widthFactor > heightFactor)  
        {  
            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;  
        }  
        else  
            if (widthFactor < heightFactor)  
            {  
                thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;  
            }  
    }  
    UIGraphicsBeginImageContext(targetSize); // this will crop  
    CGRect thumbnailRect = CGRectZero;  
    thumbnailRect.origin = thumbnailPoint;  
    thumbnailRect.size.width  = scaledWidth;  
    thumbnailRect.size.height = scaledHeight;  
    [sourceImage drawInRect:thumbnailRect];  
    newImage = UIGraphicsGetImageFromCurrentImageContext();  
    if(newImage == nil)  
        NSLog(@"could not scale image");  
    //pop the context to get back to the default  
    UIGraphicsEndImageContext();  
    return newImage;  
}  
@end  

 

方法三:(本人項目中使用的方法)

 

復制代碼代碼如下:

-(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth
{
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    CGFloat targetWidth = defineWidth;
    CGFloat targetHeight = (targetWidth / width) * height;
    UIGraphicsBeginImageContext(CGSizeMake(targetWidth, targetHeight));
    [sourceImage drawInRect:CGRectMake(0,0,targetWidth,  targetHeight)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

 

以上所述就是本文的全部內容了,希望大家能夠喜歡。



注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贺州市| 丹东市| 东平县| 开阳县| 榆林市| 乌什县| 和田市| 云安县| 比如县| 卫辉市| 莱西市| 凭祥市| 石门县| 南丹县| 宁南县| 新余市| 新闻| 略阳县| 西华县| 炉霍县| 法库县| 抚松县| 永靖县| 广宗县| 余干县| 昭通市| 江口县| 鄄城县| 广灵县| 迭部县| 来安县| 呼伦贝尔市| 武义县| 三都| 桓台县| 四会市| 油尖旺区| 贵定县| 宜丰县| 仁寿县| 揭阳市|