105 lines
2.9 KiB
Objective-C
105 lines
2.9 KiB
Objective-C
|
|
|
|
// Created by wuwei on 14/6/20.
|
|
// Copyright (c) 2014年 YY Inc. All rights reserved.
|
|
|
|
|
|
#import "UIImage+Utils.h"
|
|
#import <ImageIO/ImageIO.h>
|
|
|
|
@implementation UIImage (Utils)
|
|
+ (NSString *)getImageTypeWithImageData:(NSData *)data {
|
|
|
|
uint8_t c;
|
|
|
|
[data getBytes:&c length:1];
|
|
|
|
switch (c) {
|
|
|
|
case 0xFF:
|
|
|
|
return @"jpeg";
|
|
|
|
case 0x89:
|
|
|
|
return @"png";
|
|
|
|
case 0x47:
|
|
|
|
return @"gif";
|
|
|
|
case 0x49:
|
|
|
|
case 0x4D:
|
|
|
|
return @"tiff";
|
|
|
|
case 0x52:
|
|
|
|
if ([data length] < 12) {
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
NSString *testString = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(0, 12)] encoding:NSASCIIStringEncoding];
|
|
|
|
if ([testString hasPrefix:@"RIFF"] && [testString hasSuffix:@"WEBP"]) {
|
|
|
|
return @"webp";
|
|
|
|
}
|
|
|
|
return nil;
|
|
|
|
}
|
|
|
|
return nil;
|
|
}
|
|
|
|
+ (UIImage *)gradientColorImageFromColors:(NSArray<UIColor *> *)colors gradientType:(GradientType)gradientType imgSize:(CGSize)imgSize{
|
|
|
|
NSMutableArray *ar = [NSMutableArray array];
|
|
for(UIColor *c in colors) {
|
|
[ar addObject:(id)c.CGColor];
|
|
}
|
|
UIGraphicsBeginImageContextWithOptions(imgSize, YES, 1);
|
|
CGContextRef context = UIGraphicsGetCurrentContext();
|
|
CGContextSaveGState(context);
|
|
CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]);
|
|
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)ar, NULL);
|
|
CGPoint start;
|
|
CGPoint end;
|
|
switch (gradientType) {
|
|
case GradientTypeTopToBottom:
|
|
start = CGPointMake(0.0, 0.0);
|
|
end = CGPointMake(0.0, imgSize.height);
|
|
break;
|
|
case GradientTypeLeftToRight:
|
|
start = CGPointMake(0.0, 0.0);
|
|
end = CGPointMake(imgSize.width, 0.0);
|
|
break;
|
|
case GradientTypeUpleftToLowright:
|
|
start = CGPointMake(0.0, 0.0);
|
|
end = CGPointMake(imgSize.width, imgSize.height);
|
|
break;
|
|
case GradientTypeUprightToLowleft:
|
|
start = CGPointMake(imgSize.width, 0.0);
|
|
end = CGPointMake(0.0, imgSize.height);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
|
|
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
|
|
CGGradientRelease(gradient);
|
|
CGContextRestoreGState(context);
|
|
CGColorSpaceRelease(colorSpace);
|
|
UIGraphicsEndImageContext();
|
|
|
|
return image;
|
|
}
|
|
|
|
|
|
@end
|