根据颜色返回图片,根据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;

最新文章

  1. C++ std::array
  2. yii asset 初步
  3. APICloud:轻松6步完成App软件开发
  4. ERStudio的使用
  5. Android 滑动冲突处理
  6. html&lt;textarea&gt;标签
  7. iOS 消息转发
  8. python 基础——实现一个带缓存功能的函数
  9. jquery自动生成二维码
  10. 有关UIImageView+AFNetworking 下载图片的线程问题
  11. Leetcode那点事儿
  12. qt动态更新界面的菜鸟代码,请指出
  13. 关于log4net 生成多个文件夹的解决方案。
  14. PHP实现冒泡排序、双向冒泡排序算法
  15. [译]在运行时内存中的Java对象是怎么样的
  16. SSH:Action中Service无法实例化
  17. 一些 NSArray 的基本操作代码例子
  18. python之三级目录
  19. 给Win32 GUI程序增加控制台窗口的方法
  20. phpstudy远程连接mysql

热门文章

  1. 从vboot来看:virtualbox 和 vmware 虚拟化软件环境的兼容性(支持能力)的差距真是挺大的!
  2. QT QML 3D模型查看器
  3. [PHP] 06 - Security: Error, Exception and Filter
  4. 不可思议的颜色混合模式 mix-blend-mode (转)
  5. css3整理--background-clip
  6. MySQL 出现You can&#39;t specify target table for update in FROM clause错误解决方法
  7. Pro ASP.NET MVC –第三章 MVC模式
  8. 使用SpringContextHolder获取bean实例
  9. css---点击显示和隐藏
  10. ubuntu下安装Python3