1、給一個view截圖
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
[view.layer?renderInContext:UIGraphicsGetCurrentContext()];
UIImage?*img?=?UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
2、顏色轉(zhuǎn)圖片
+ (UIImage *)cl_imageWithColor:(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?*image?=?UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnimage;
}
3、判斷圖片類型
//通過圖片Data數(shù)據(jù)第一個字節(jié) 來獲取圖片擴展名
-?(NSString?*)contentTypeForImageData:(NSData?*)data
{
uint8_t?c;
[data?getBytes:&c?length:1];
switch(c)
{
case0xFF:
return@"jpeg";
case0x89:
return@"png";
case0x47:
return@"gif";
case0x49:
case0x4D:
return@"tiff";
case0x52:
if([data?length]?<?12)?{
returnnil;
}
NSString?*testString?=?[[NSString?alloc]?initWithData:[data?subdataWithRange:NSMakeRange(0,?12)]?encoding:NSASCIIStringEncoding];
if([testString?hasPrefix:@"RIFF"]
&&?[testString?hasSuffix:@"WEBP"])
{
return@"webp";
}
returnnil;
}
returnnil;
}
4、image圓角
- (UIImage *)circleImage
{
//?NO代表透明
UIGraphicsBeginImageContextWithOptions(self.size,?NO,?1);
//?獲得上下文
CGContextRef?ctx?=?UIGraphicsGetCurrentContext();
//?添加一個圓
CGRect?rect?=?CGRectMake(0,?0,?self.size.width,?self.size.height);
//?方形變圓形
CGContextAddEllipseInRect(ctx,?rect);
//?裁剪
CGContextClip(ctx);
//?將圖片畫上去
[self?drawInRect:rect];
UIImage?*image?=?UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnimage;
}
5、image拉伸
+ (UIImage *)resizableImage:(NSString *)imageName
{
UIImage?*image?=?[UIImage?imageNamed:imageName];
CGFloat?imageW?=?image.size.width;
CGFloat?imageH?=?image.size.height;
return[image?resizableImageWithCapInsets:UIEdgeInsetsMake(imageH?*?0.5,?imageW?*?0.5,?imageH?*?0.5,?imageW?*?0.5)?resizingMode:UIImageResizingModeStretch];
}
6、取圖片某一點的顏色
if(point.x < 0 || point.y < 0)returnnil;
CGImageRef?imageRef?=?self.CGImage;
NSUInteger?width?=?CGImageGetWidth(imageRef);
NSUInteger?height?=?CGImageGetHeight(imageRef);
if(point.x?>=?width?||?point.y?>=?height)returnnil;
unsigned?char?*rawData?=?malloc(height?*?width?*?4);
if(!rawData)returnnil;
CGColorSpaceRef?colorSpace?=?CGColorSpaceCreateDeviceRGB();
NSUInteger?bytesPerPixel?=?4;
NSUInteger?bytesPerRow?=?bytesPerPixel?*?width;
NSUInteger?bitsPerComponent?=?8;
CGContextRef?context?=?CGBitmapContextCreate(rawData,
width,
height,
bitsPerComponent,
bytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedLast
|?kCGBitmapByteOrder32Big);
if(!context)?{
free(rawData);
returnnil;
}
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context,?CGRectMake(0,?0,?width,?height),?imageRef);
CGContextRelease(context);
int?byteIndex?=?(bytesPerRow?*?point.y)?+?point.x?*?bytesPerPixel;
CGFloat?red???=?(rawData[byteIndex]?????*?1.0)?/?255.0;
CGFloat?green?=?(rawData[byteIndex?+?1]?*?1.0)?/?255.0;
CGFloat?blue??=?(rawData[byteIndex?+?2]?*?1.0)?/?255.0;
CGFloat?alpha?=?(rawData[byteIndex?+?3]?*?1.0)?/?255.0;
UIColor?*result?=?nil;
result?=?[UIColor?colorWithRed:red?green:green?blue:blue?alpha:alpha];
free(rawData);
returnresult;
7、判斷該圖片是否有透明度通道
- (BOOL)hasAlphaChannel
{
CGImageAlphaInfo?alpha?=?CGImageGetAlphaInfo(self.CGImage);
return(alpha?==?kCGImageAlphaFirst?||
alpha?==?kCGImageAlphaLast?||
alpha?==?kCGImageAlphaPremultipliedFirst?||
alpha?==?kCGImageAlphaPremultipliedLast);
}
8、獲得灰度圖
+ (UIImage*)covertToGrayImageFromImage:(UIImage*)sourceImage
{
int?width?=?sourceImage.size.width;
int?height?=?sourceImage.size.height;
CGColorSpaceRef?colorSpace?=?CGColorSpaceCreateDeviceGray();
CGContextRef?context?=?CGBitmapContextCreate?(nil,width,height,8,0,colorSpace,kCGImageAlphaNone);
CGColorSpaceRelease(colorSpace);
if(context?==?NULL)?{
returnnil;
}
CGContextDrawImage(context,CGRectMake(0, 0, width, height), sourceImage.CGImage);
CGImageRef contextRef = CGBitmapContextCreateImage(context);
UIImage *grayImage = [UIImage imageWithCGImage:contextRef];
CGContextRelease(context);
CGImageRelease(contextRef);
returngrayImage;
}
9、合并兩個圖片
+ (UIImage*)mergeImage:(UIImage*)firstImage withImage:(UIImage*)secondImage {
CGImageRef?firstImageRef?=?firstImage.CGImage;
CGFloat?firstWidth?=?CGImageGetWidth(firstImageRef);
CGFloat?firstHeight?=?CGImageGetHeight(firstImageRef);
CGImageRef?secondImageRef?=?secondImage.CGImage;
CGFloat?secondWidth?=?CGImageGetWidth(secondImageRef);
CGFloat?secondHeight?=?CGImageGetHeight(secondImageRef);
CGSize?mergedSize?=?CGSizeMake(MAX(firstWidth,?secondWidth),?MAX(firstHeight,?secondHeight));
UIGraphicsBeginImageContext(mergedSize);
[firstImage?drawInRect:CGRectMake(0,?0,?firstWidth,?firstHeight)];
[secondImage?drawInRect:CGRectMake(0,?0,?secondWidth,?secondHeight)];
UIImage?*image?=?UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnimage;
}
10、為imageView添加倒影
CGRect frame = self.frame;
frame.origin.y?+=?(frame.size.height?+?1);
UIImageView?*reflectionImageView?=?[[UIImageView?alloc]?initWithFrame:frame];
self.clipsToBounds?=?TRUE;
reflectionImageView.contentMode?=?self.contentMode;
[reflectionImageView?setImage:self.image];
reflectionImageView.transform?=?CGAffineTransformMakeScale(1.0,?-1.0);
CALayer?*reflectionLayer?=?[reflectionImageView?layer];
CAGradientLayer?*gradientLayer?=?[CAGradientLayer?layer];
gradientLayer.bounds?=?reflectionLayer.bounds;
gradientLayer.position?=?CGPointMake(reflectionLayer.bounds.size.width?/?2,?reflectionLayer.bounds.size.height?*?0.5);
gradientLayer.colors?=?[NSArray?arrayWithObjects:
(id)[[UIColor?clearColor]?CGColor],
(id)[[UIColor?colorWithRed:1.0?green:1.0?blue:1.0?alpha:0.3]?CGColor],?nil];
gradientLayer.startPoint?=?CGPointMake(0.5,0.5);
gradientLayer.endPoint?=?CGPointMake(0.5,1.0);
reflectionLayer.mask?=?gradientLayer;
[self.superview?addSubview:reflectionImageView];
11、畫水印
// 畫水印
-?(void)?setImage:(UIImage?*)image?withWaterMark:(UIImage?*)mark?inRect:(CGRect)rect
{
if([[[UIDevice?currentDevice]?systemVersion]?floatValue]?>=?4.0)
{
UIGraphicsBeginImageContextWithOptions(self.frame.size,?NO,?0.0);
}
//原圖
[image?drawInRect:self.bounds];
//水印圖
[mark?drawInRect:rect];
UIImage?*newPic?=?UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.image?=?newPic;
}
12、獲取一個視頻的第一幀圖片
NSURL *url = [NSURL URLWithString:filepath];
AVURLAsset?*asset1?=?[[AVURLAsset?alloc]?initWithURL:url?options:nil];
AVAssetImageGenerator?*generate1?=?[[AVAssetImageGenerator?alloc]?initWithAsset:asset1];
generate1.appliesPreferredTrackTransform?=?YES;
NSError?*err?=?NULL;
CMTime?time?=?CMTimeMake(1,?2);
CGImageRef?oneRef?=?[generate1?copyCGImageAtTime:time?actualTime:NULL?error:&err];
UIImage?*one?=?[[UIImage?alloc]?initWithCGImage:oneRef];
returnone;
13、UIView背景顏色漸變
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)];
[self.view?addSubview:view];
CAGradientLayer?*gradient?=?[CAGradientLayer?layer];
gradient.frame?=?view.bounds;
gradient.colors?=?[NSArray?arrayWithObjects:(id)[[UIColor?blackColor]?CGColor],?(id)[[UIColor?whiteColor]?CGColor],?nil];
[view.layer?insertSublayer:gradient?atIndex:0];
14、UIImage和base64互轉(zhuǎn)
// view分類方法
-?(NSString?*)encodeToBase64String:(UIImage?*)image?{
return[UIImagePNGRepresentation(image)?base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
}
-?(UIImage?*)decodeBase64ToImage:(NSString?*)strEncodeData?{
NSData?*data?=?[[NSData?alloc]initWithBase64EncodedString:strEncodeData?options:NSDataBase64DecodingIgnoreUnknownCharacters];
return[UIImage?imageWithData:data];
}
15、將一個image保存在相冊中
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
或者
#import
[[PHPhotoLibrary?sharedPhotoLibrary]?performChanges:^{
PHAssetChangeRequest?*changeRequest?=?[PHAssetChangeRequest?creationRequestForAssetFromImage:image];
changeRequest.creationDate??????????=?[NSDate?date];
}?completionHandler:^(BOOL?success,?NSError?*error)?{
if(success)?{
NSLog(@"successfully?saved");
}
else{
NSLog(@"error?saving?to?photos:?%@",?error);
}
}];
16、修改cell.imageView的大小
UIImage *icon = [UIImage imageNamed:@""];
CGSize?itemSize?=?CGSizeMake(30,?30);
UIGraphicsBeginImageContextWithOptions(itemSize,?NO?,0.0);
CGRect?imageRect?=?CGRectMake(0.0,?0.0,?itemSize.width,?itemSize.height);
[icon?drawInRect:imageRect];
cell.imageView.image?=?UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
17、 ? ?