图片文件等比例缩放
.h
#import <Foundation/Foundation.h>
@class BaseFileModel;
typedef void (^successPreBlock)();
typedef void (^failePreBlock)();
@interface ImagePreviewOperation : NSOperation{
BOOL _isLocal;
NSString *_compressPath;
successPreBlock _success;
failePreBlock _faile;
BaseFileModel *_file;
}
-(id)initWithFile:(BaseFileModel *)file isLocal:(BOOL) isLocal successHandle:(successPreBlock)success faileHandle:(failePreBlock)faile;
@end
.m
#import "ImagePreviewOperation.h"
#import "ImageUtil.h"
#import "LocalFileModel.h"
@implementation ImagePreviewOperation
-(id)initWithFile:(BaseFileModel *)file isLocal:(BOOL) isLocal successHandle:(successPreBlock)success faileHandle:(failePreBlock)faile{
if (self = [super init]) {
_file = file;
_isLocal = isLocal;
_success = success;
_faile = faile;
}
return self;
}
/*
判断图片尺寸,按1024标准缩放
*/
-(CGSize)fitSize:(CGSize)imageSize{
if(imageSize.width == 0 && imageSize.height ==0)
return CGSizeMake(0, 0);
CGFloat wscale = imageSize.width/1024;
CGFloat hscale = imageSize.height/1024;
CGFloat scale = MAX(wscale, hscale);
if (scale > 1.0f) {
return CGSizeMake(imageSize.width/scale, imageSize.height/scale);
}
return imageSize;
}
/*
处理图片
*/
-(UIImage *)fitSmallImage:(UIImage *)image{
if (nil == image) {
return nil;
}
if (image.size.width < 1024 && image.size.height < 1024) {
return image;
}
CGSize size = [self fitSize:image.size];
UIGraphicsBeginImageContext(size);
CGRect rect = CGRectMake(0, 0, size.width, size.height);
[image drawInRect:rect];
UIImage *newimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newimage;
}
-(void)main{
NSLog(@"pre begin");
@try {
UIImage *image = nil;
if (_isLocal) {
LocalFileModel *localFile = (LocalFileModel *)_file;
image = [UIImage imageWithContentsOfFile:localFile.absolutePath];
}else{
image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", NSTemporaryDirectory(), [[ImageUtil compressImagePath:_file isLocal:_isLocal] lastPathComponent]]];
}
image = [self fitSmallImage:image];
NSString *previewPath = [ImageUtil previewImagePath:_file isLocal:_isLocal];
NSData *data = UIImageJPEGRepresentation(image, 1);
NSLog(@"pre data= %lu",(unsigned long)data.length);
[data writeToFile:previewPath atomically:YES];//保存previewimage
image = nil;
_success();
}
@catch (NSException *exception) {
NSLog(@"previewOperationException %@",exception);
_faile();
}
@finally {
}
}
浙公网安备 33010602011771号