如何从GPUImageView得到的UIImage(How can i get UIImage fr

2019-08-21 20:47发布

我使用GPUImageView库在我的项目,其中使用GPUImageView,我已经加入像对比度和对GPUImageView其他图像效果,如深褐色等过滤器,一切都很好,但现在问题是,我想那GPUImageVIew转换成UIImage的,这样我可以提取出来的图像是UIImage的,并张贴在Facebook上的形象,但我不能够做到这一点这是越来越在Facebook上张贴的图片没有它,我增加使用GPUIMageView特效简单的摄像头拍摄的图像。 如何实现这一目标。 请帮我.Thanks提前...下面是我的代码

    -(void) loadFilters
{
    for(int i = 0; i < 10; i++)
    {
        UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
        [button setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg", i + 1]] forState:UIControlStateNormal];
        button.frame = CGRectMake(10+i*(60+10), 5.0f, 60.0f, 60.0f);
        button.layer.cornerRadius = 7.0f;

        //use bezier path instead of maskToBounds on button.layer
        UIBezierPath *bi = [UIBezierPath bezierPathWithRoundedRect:button.bounds
                                                 byRoundingCorners:UIRectCornerAllCorners
                                                       cornerRadii:CGSizeMake(7.0,7.0)];

        CAShapeLayer *maskLayer = [CAShapeLayer layer];
        maskLayer.frame = button.bounds;
        maskLayer.path = bi.CGPath;
        button.layer.mask = maskLayer;

        button.layer.borderWidth = 1;
        button.layer.borderColor = [[UIColor blackColor] CGColor];

        [button addTarget:self
                   action:@selector(filterClicked:)
         forControlEvents:UIControlEventTouchUpInside];
        button.tag = i;
       // [button setTitle:@"*" forState:UIControlStateSelected];
        if(i == 0){
            [button setSelected:YES];
        }
        [self.filterScrollView addSubview:button];
    }
    [self.filterScrollView setContentSize:CGSizeMake(10 + 10*(60+10), 75.0)];
}
-(void) filterClicked:(UIButton *) sender
{
    for(UIView *view in self.filterScrollView.subviews)
    {
        if([view isKindOfClass:[UIButton class]])
        {
            [(UIButton *)view setSelected:NO];
        }
    }

    [sender setSelected:YES];
    [self removeAllTargets];

    selectedFilter = sender.tag;
    [self setFilter:sender.tag];
    [self prepareFilter];
}

-(void) setFilter:(int) index
{
    UIImage *inputImage = [UIImage imageNamed:@"Default-568h@2x.png"];
    img_New = [[UIImage alloc] init];
    switch (index) {
        case 1:
        {
            filter = [[GPUImageContrastFilter alloc] init];
            [(GPUImageContrastFilter *) filter setContrast:1.75];
           // img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew1.png"]];
            }
        } break;
        case 2:
        {
            filter = [[GPUImageToneCurveFilter alloc] initWithACV:@"crossprocess"];
            //img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew2.png"]];
            }
        } break;
        case 3:
        {
            filter = [[GPUImageToneCurveFilter alloc] initWithACV:@"02"];
            //img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew3.png"]];
            }
        } break;
        case 4:
        {
            filter = [[GrayscaleContrastFilter alloc] init];
            //img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew4.png"]];
            }
        } break;
        case 5:
        {
            filter = [[GPUImageToneCurveFilter alloc] initWithACV:@"17"];
            //img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew5.png"]];
            }
        } break;
        case 6: {
            filter = [[GPUImageToneCurveFilter alloc] initWithACV:@"aqua"];
            //img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew6.png"]];
            }
        } break;
        case 7: {
            filter = [[GPUImageToneCurveFilter alloc] initWithACV:@"yellow-red"];
            //img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew7.png"]];
            }
        } break;
        case 8: {
            filter = [[GPUImageToneCurveFilter alloc] initWithACV:@"06"];
           // img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew8.png"]];
            }
        } break;
        case 9: {
            filter = [[GPUImageToneCurveFilter alloc] initWithACV:@"purple-green"];
           // img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@"borderNew9.png"]];
            }
        } break;
        default:
            filter = [[GPUImageFilter alloc] init];
            //img_New = [filter imageByFilteringImage:inputImage];
            if(Border==NO)
            {
                [imgBorder setImage:[UIImage imageNamed:@""]];
            }
            break;
    }
}

Answer 1:

你可以通过图像

UIImage *currentFilteredImage = [filter imageFromCurrentlyProcessedOutput];


文章来源: How can i get UIImage from GPUImageView