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