UIImage常用封装

根据颜色返回图片,根据str返回颜色,压缩UIImage不大于300k

.h代码:

#import <Foundation/Foundation.h>

@interface ImageService : NSObject
/**
 根据颜色返回图片
 */
+(UIImage*) createImageWithColor:(UIColor*) color;
/**
 根据str返回颜色
 */
+ (UIColor *) colorWithHexString: (NSString *)color;
//获取data不大于300k
+ (NSData *)compressOriginalImage:(UIImage *)image;
@end

 .m代码:

#import "ImageService.h"

@implementation ImageService

//color转image
+(UIImage*) createImageWithColor:(UIColor*) color
{
    CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return theImage;
}
//str转color
+ (UIColor *) colorWithHexString: (NSString *)color
{
    NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
    
    // String should be 6 or 8 characters
    if ([cString length] < 6) {
        return [UIColor clearColor];
    }
    // strip 0X if it appears
    if ([cString hasPrefix:@"0X"])
        cString = [cString substringFromIndex:2];
    if ([cString hasPrefix:@"#"])
        cString = [cString substringFromIndex:1];
    if ([cString length] != 6)
        return [UIColor clearColor];
    
    // Separate into r, g, b substrings
    NSRange range;
    range.location = 0;
    range.length = 2;
    
    //r
    NSString *rString = [cString substringWithRange:range];
    
    //g
    range.location = 2;
    NSString *gString = [cString substringWithRange:range];
    
    //b
    range.location = 4;
    NSString *bString = [cString substringWithRange:range];
    
    // Scan values
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];
    
    return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];
}
+ (NSData *)compressOriginalImage:(UIImage *)image{
    NSData * data = UIImageJPEGRepresentation(image, 1.0);
    CGFloat dataKBytes = data.length/1000.0;
    CGFloat maxQuality = 0.9f;
    CGFloat lastData = dataKBytes;
    while (dataKBytes > 10 && maxQuality > 0.01f) {
        maxQuality = maxQuality - 0.01f;
        data = UIImageJPEGRepresentation(image, maxQuality);
        dataKBytes = data.length / 1000.0;
        if (lastData == dataKBytes) {
            break;
        }else{
            lastData = dataKBytes;
        }
    }
    return data;
}

@end

头像压缩代码:

  
    NSData * data = UIImageJPEGRepresentation(image, 1.0);
    CGFloat dataSizeM = data.length/1024.0/1024.0;
    if(dataSizeM>1.0){
        data = UIImageJPEGRepresentation(image, 0.1);
    }else if(dataSizeM>0.8){
        data = UIImageJPEGRepresentation(image, 0.8);
    }else if(dataSizeM>0.5){
        data = UIImageJPEGRepresentation(image, 0.6);
    }
    return data;
原文地址:https://www.cnblogs.com/hualuoshuijia/p/9987523.html