2

スライダーと背景画像のあるビューがあります。背景画像はスライダーに従って更新されます。スライダーはフィルターのレベルを制御します。

このフレームワークhttps://github.com/BradLarson/GPUImageを使用して、フィルターで画像を処理しています。

以下のコードから、画像はスライダーで更新されており、フィルターはうまく機能しています。ただし、フィルターによって処理された画像を保存しようとしています(別のクラスでUIImageを設定するため)が、これを達成できません(フィルター処理された画像は保存されませんが、フィルター処理された画像は保存されます)...画像が間違っているか、フォーマットが間違っていますか?

私は何時間もこれにいたので、私を助けてください!

- (void)loadView
{
CGRect mainScreenFrame = [[UIScreen mainScreen] applicationFrame];
GPUImageView *primaryView = [[GPUImageView alloc] initWithFrame:mainScreenFrame];
self.view = primaryView;


*imageSlider = [[UISlider alloc] initWithFrame:CGRectMake(25.0, mainScreenFrame.size.height - 50.0, mainScreenFrame.size.width - 50.0, 40.0)];
[imageSlider addTarget:self action:@selector(updateSliderValue:) forControlEvents:UIControlEventValueChanged];
imageSlider.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
imageSlider.minimumValue = 0.0;
imageSlider.maximumValue = 1.0;
imageSlider.value = 0.5;

[primaryView addSubview:imageSlider];

[self setupDisplayFiltering];

- (IBAction)updateSliderValue:(id)sender
{
CGFloat midpoint = [(UISlider *)sender value];
[(GPUImageBrightnessFilter *)sepiaFilter setBrightness:midpoint];
//[(GPUImageSepiaFilter *)sepiaFilter setIntensity:[(UISlider *)sender value]];
//[(GPUImageSaturationFilter *)sepiaFilter setSaturation:midpoint];
//[(GPUImageRGBFilter *)sepiaFilter setGreen:midpoint];

[sourcePicture processImage];
}

- (void)setupDisplayFiltering;
{

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *imageToUseData = [defaults dataForKey:@"imageToUse"];
UIImage *inputImage = [UIImage imageWithData:imageToUseData];

sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];
//sepiaFilter = [[GPUImageSepiaFilter alloc] init];
sepiaFilter = [[GPUImageBrightnessFilter alloc] init];

GPUImageView *imageView = (GPUImageView *)self.view;
[sepiaFilter forceProcessingAtSize:imageView.sizeInPixels]; // This is now needed to make the filter run at the smaller output size

[sourcePicture addTarget:sepiaFilter];
[sepiaFilter addTarget:imageView];

[sourcePicture processImage];



UIImage *outputImage = [sepiaFilter imageFromCurrentlyProcessedOutput];
UIImage *quickFilteredImage = [brightnessFilter imageByFilteringImage:inputImage];


// set the image chosen for other classes to set uiimages with
NSData *imageToStore = UIImageJPEGRepresentation(outputImage, 100);
[defaults removeObjectForKey:@"imageToUse"];
[defaults setObject:imageToStore forKey:@"imageToUse"];
}
4

0 に答える 0