Jak mogę uzyskać UIImage z GPUImageView
Korzystam z biblioteki GPUImageView w moim projekcie, gdzie używa GPUImageView i dodałem filtry, takie jak kontrast i inne efekty graficzne, takie jak sepia itp. Na tym GPUImageView, wszystko jest dobre, ale problem jest teraz chcę przekonwertować GPUImageVIew na UIImage, abym mógł wyodrębnij obraz z tego UIImage i opublikuj ten obraz na Facebooku, ale nie jestem w stanie tego zrobić. Obraz, który jest wysyłany na facebooku, jest prostym obrazem przechwyconym przez aparat bez efektów specjalnych, które dodałem za pomocą GPUIMageView. Jak to osiągnąć. Proszę mi pomóc. Z góry ... Poniżej znajduje się mój kod
-(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:@"[email protected]"];
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;
}
}