//调整图片至指定大小,等比缩放
+(UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
{
UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize));
[image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
//调整图片至指定大小,以CGSize与图片的最小比例值进行等比缩放
+(UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)scaleSize
{
float w = scaleSize.width / image.size.width;
float h = scaleSize.height / image.size.height;
float x = w > h ? h : w;
UIGraphicsBeginImageContext(CGSizeMake(image.size.width * x, image.size.height * x));
[image drawInRect:CGRectMake(0, 0, image.size.width * x, image.size.height * x)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
//调整图片至指定大小,以CGSize与图片的最小比例值进行等比缩放
+(UIImage *)scaleImage:(NSString *)imageName toFixed:(CGSize)scaleSize
{
UIImage *image = [UIImage imageNamed:imageName];
return [self scaleImage:image toSize:scaleSize];
}
//调整图片至指定大小
+(UIImage *)makeImageSize: (NSString *)imageName toFixed:(CGSize)scaleSize
{
UIImage *image = [UIImage imageNamed:imageName];
UIImage *scaledImage = [self makeImageSize:image fixed:scaleSize];
return scaledImage;
}
//调整图片至指定大小
+(UIImage *)makeImageSize: (UIImage *)image fixed:(CGSize)scaleSize
{
UIGraphicsBeginImageContext(scaleSize);
[image drawInRect:CGRectMake(0, 0, scaleSize.width, scaleSize.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledImage;
}
/**
* 保存图片到本地
**/
+(void) saveImageToLocal:(UIImage *)image forKey:(NSString *)key
{
NSUserDefaults *userDef = [NSUserDefaults standardUserDefaults];
[userDef setObject:UIImagePNGRepresentation(image) forKey:key];
}
/**
* 截屏
**/
+ (UIImage *) getScreenToImage:(UIView *)view area:(CGRect)rect
{
UIGraphicsBeginImageContext(rect.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *parentImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if(view.frame.size.width > rect.size.width || view.frame.size.height > rect.size.height)
{
CGImageRef imageRef = parentImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, rect);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, rect, subImageRef);
UIImage* image = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
CFRelease(subImageRef);
return image;
}else{
return parentImage;
}
}
/**
* 截断图片到指定大小
**/
+ (UIImage *) catOffImage:(UIImage *)image toSize:(CGSize)size
{
CGRect rect = CGRectMake(0, 0, size.width, size.height);
CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, rect);
CGRect smallBounds = CGRectMake(0, 0, CGImageGetWidth(subImageRef), CGImageGetHeight(subImageRef));
UIGraphicsBeginImageContext(smallBounds.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextDrawImage(context, smallBounds, subImageRef);
UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
CFRelease(subImageRef);
return smallImage;
}
//保存图片到目录 .../xxx/xxx.jpg
+ (void)saveImage:(UIImage *)image toPath:(NSString *)path {
[UIImageJPEGRepresentation(image, 1.0) writeToFile:path atomically:YES];
}
// 根据图片类型将图片保存到指定目录下
+ (BOOL)saveImage:(UIImage *)image toPath:(NSString *)path withName:(NSString *)imageName andExtension:(NSString *)extension {
if ([[extension lowercaseString] isEqualToString:@"png"]) {
NSLog(@"保存为png格式 ------------");
[UIImagePNGRepresentation(image) writeToFile:[path stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] options:NSAtomicWrite error:nil];
} else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) {
NSLog(@"保存为jpg格式 ------------");
[UIImageJPEGRepresentation(image, 1.0) writeToFile:[path stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];
} else {
NSLog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
return NO;
}
NSLog(@"保存图片成功");
return YES;
}
// 将两张图片合成一张图片
+ (UIImage *)compoundImageWithPhoto:(UIImage *)photo andDoodle:(UIImage *)doodle {
UIGraphicsBeginImageContext(photo.size);
// Draw image1
[photo drawInRect:CGRectMake(0, 0, photo.size.width, photo.size.height)];
// Draw image2
[doodle drawInRect:CGRectMake(0, 0, doodle.size.width, doodle.size.height)];
UIImage *compoundImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return compoundImage;
}
+ (BOOL)compressImage:(UIImage *)image AndSaveToPath:(NSString *)path SaveFileName:(NSString *)fileName andExtension:(NSString *)extension {
BOOL result;
NSData *imageCompressData;
if ([[extension lowercaseString] isEqualToString:@"png"]) {
imageCompressData = UIImagePNGRepresentation(image);
} else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) {
imageCompressData = UIImageJPEGRepresentation(image, kImageCompressionQualityDefault);
} else {
NSLog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
return NO;
}
NSString *fullPath = [NSString stringWithFormat:@"%@/%@.%@", path, fileName, [extension lowercaseString]];
result = [imageCompressData writeToFile:fullPath atomically:YES];
return result;
}
+ (UIImage *) addImage:(UIImage *)source toImage:(UIImage *)to {
int width = (to.size.width < to.size.height) ? to.size.width : to.size.height;
UIGraphicsBeginImageContext(CGSizeMake(width, width));
//Draw image2
[to drawInRect:CGRectMake(0, 0, width,width)];
//Draw image1
int imageWidth = width / 4;
[source drawInRect:CGRectMake(width - imageWidth, width - imageWidth, imageWidth, imageWidth)];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImage;
}
#pragma mark - 网络请求
/**
* 判断是否已联网
**/
+(BOOL)isNetworkReachable{
// Create zero addy
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
// Recover reachability flags
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags;
BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability);
if (!didRetrieveFlags)
{
return NO;
}
BOOL isReachable = flags & kSCNetworkFlagsReachable;
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
return (isReachable && !needsConnection) ? YES : NO;
}