簡體   English   中英

我如何從GPUImageView獲取UIImage

[英]How can i get UIImage from GPUImageView

我在我的項目中使用GPUImageView的項目中使用GPUImageView庫,並且在該GPUImageView上添加了諸如對比度和棕褐色等其他圖像效果的濾鏡,一切都很好,但是問題是我現在想將該GPUImageVIew轉換為UIImage以使我可以從UIImage中提取圖像並將其發布到Facebook上,但是我無法做到在Facebook上發布的圖像是簡單的相機捕獲圖像,而沒有使用GPUIMageView添加的特殊效果。 如何實現這一點。 請幫助我。在此先感謝...下面是我的代碼

    -(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;
    }
}

您可以通過以下方式獲取圖像

UIImage *currentFilteredImage = [filter imageFromCurrentlyProcessedOutput];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM