objective-c 圖片處理機制

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;


@end

----------------------------------------------------------------------------------------------

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

相關文章
相關標籤/搜索