ImageProcessing.h 文件異步
----------------------------------------------------async
#import <Foundation/Foundation.h>atom
#import <UIKit/UIKit.h>spa
@interface ImageProcessing : NSObject.net
{線程
UIImage* newImage;3d
}orm
@property(nonatomic,strong)NSMutableArray * imageMuarray;隊列
-(UIImage*)imageWithImage:(UIImage*)image;圖片
-(void)GCDdemoRunArray:(NSArray * )array;
----------------------------------------------------------------------------------------------
ImageProcessing.m 文件
#import "ImageProcessing.h"
@implementation ImageProcessing
//對照片進行壓縮
-(UIImage*)imageWithImage:(UIImage*)image
{
newImage = image;
//獲取圖片字節
NSData * imagedataI=UIImageJPEGRepresentation(image, 1.0);
NSLog(@"data:%lu",imagedataI.length);
while(imagedataI.length >100000) {
newImage=[self changeImage:image size:2];
image =newImage;
imagedataI=UIImageJPEGRepresentation(image, 1.0);
NSLog(@"1");
}
return newImage;
}
-(UIImage *)changeImage:(UIImage*)image size:(int)num{
CGSize size =image.size;
//設置圖片的尺寸
size.width=image.size.width/num;
size.height=image.size.height/num;
//對圖片尺寸進行壓縮
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage* newImageOne = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImageOne;
}
-(NSMutableArray * )imageMuarray{
if (_imageMuarray==nil) {
_imageMuarray=[NSMutableArray array];
}
return _imageMuarray;
}
//串行對列
-(void)GCDdemoRunArray:(NSArray * )array{
dispatch_queue_t serialQueue=dispatch_queue_create("mySerialQueue", DISPATCH_QUEUE_SERIAL);
//建立一個線程
for (int i=0; i<array.count; i++) {
//建立異步執行對列
//建立串行隊列因此不會開啓新的線程
dispatch_async(serialQueue, ^{
[self compressPicArray:array Index:i];
});
}
}
-(void)compressPicArray:(NSArray *)newarray Index:(int)index{
UIImage * newimage= [self imageWithImage:newarray[index]];
[self.imageMuarray addObject:newimage];
NSData *data = UIImageJPEGRepresentation(_imageMuarray[index],1);
[data writeToFile:[NSString stringWithFormat:@"/Users/dc017/desktop/ok%i.png",index] atomically:YES];
NSLog(@"%@",_imageMuarray);
}
@end