//要的是实际图片的大小
- (UIImage *)clipDownOriginalImg
{
CGFloat imageScale = MIN(self.imgView.frame.size.width/self.targetImg.size.width, self.imgView.frame.size.height/self.targetImg.size.height);
CGFloat clipX = (self.clipAreaLayer.leftEdge - self.imgView.frame.origin.x)/imageScale;
CGFloat clipY = (self.clipAreaLayer.topEdge - self.imgView.frame.origin.y)/imageScale;
CGFloat clipWidth = self.clipAreaWidth/imageScale;
CGFloat clipHeight = self.clipAreaHeight/imageScale;
CGRect clipImgRect = CGRectMake(clipX, clipY, clipWidth, clipHeight);
CGImageRef sourceImageRef = [self.targetImg CGImage];
CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, clipImgRect);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
CGImageRelease(newImageRef);
return newImage;
}
- (void)colorImg:(UIImage *)img
{
[self.filter forceProcessingAtSize:img.size];
self.staticPicture.image = img;
if (self.outPutImgArr.count > 0) {
[self.outPutImgArr removeAllObjects];
}
//图片太多,内存爆增,系统会自动杀掉app
// [self.outPutImgArr addObject:img];
// NSArray *paramArr = @[@"0.1", @"0.2", @"0.3", @"0.4", @"0.5", @"0.6", @"0.7", @"0.8", @"0.9", @"1.0"];
NSArray *paramArr = @[@"0.3", @"0.5", @"0.7", @"0.9", @"1.0"];
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_async(queue, ^{
dispatch_apply(paramArr.count, queue, ^(size_t index) {
NSString *paramStr = paramArr[index];
[self.filter setIntensity: paramStr.floatValue];
[self.staticPicture processImage];
[self.outPutImgArr addObject:[self.filter imageFromCurrentlyProcessedOutput]];
// NSLog(@"memoryUsage------%lld", [self memoryUsage]);
dispatch_async(dispatch_get_main_queue(), ^{
[self reloadData];
});
});
// NSLog(@"-------Done1");
});
// NSLog(@"-------Done2");
}