private void applySepiaFilter(float sepiaIntensity) { // Apply a filter GPUImageSepiaFilter filter = new GPUImageSepiaFilter(); filter.Intensity = sepiaIntensity; // Create image object to process GPUImagePicture stillImageSource = new GPUImagePicture(image, true); stillImageSource.AddTarget(filter); filter.AddTarget(imageView); // Launch the process stillImageSource.ProcessImage(); }
public async override void ViewDidLoad() { base.ViewDidLoad(); filter = new GPUImageTiltShiftFilter(); // This is now needed to make the filter run at the smaller output size filter.ForceProcessingAtSize(imageView.SizeInPixels); filter.AddTarget(imageView); var inputImage = UIImage.FromBundle("WID-small.jpg"); picture = new GPUImagePicture(inputImage, true); picture.AddTarget(filter); await picture.ProcessImageAsync(); }
async partial void OnResampleSelectorChanged(UISegmentedControl sender) { switch (sender.SelectedSegment) { case 0: // Linear downsampling var passthroughFilter = new GPUImageBrightnessFilter(); passthroughFilter.ForceProcessingAtSize(new CGSize(640.0, 480.0)); var linearImageSource = new GPUImagePicture(inputImage); linearImageSource.AddTarget(passthroughFilter); passthroughFilter.UseNextFrameForImageCapture(); await linearImageSource.ProcessImageAsync(); imageView.Image = passthroughFilter.ToImage(UIImageOrientation.Up); break; case 1: // Lanczos downsampling var lanczosResamplingFilter = new GPUImageLanczosResamplingFilter(); lanczosResamplingFilter.ForceProcessingAtSize(new CGSize(640.0, 480.0)); var lanczosImageSource = new GPUImagePicture(inputImage); lanczosImageSource.AddTarget(lanczosResamplingFilter); lanczosResamplingFilter.UseNextFrameForImageCapture(); await lanczosImageSource.ProcessImageAsync(); imageView.Image = lanczosResamplingFilter.ToImage(UIImageOrientation.Up); break; case 2: // Trilinear downsampling var passthroughFilter2 = new GPUImageBrightnessFilter(); passthroughFilter2.ForceProcessingAtSize(new CGSize(640.0, 480.0)); var trilinearImageSource = new GPUImagePicture(inputImage, true); trilinearImageSource.AddTarget(passthroughFilter2); passthroughFilter2.UseNextFrameForImageCapture(); await trilinearImageSource.ProcessImageAsync(); imageView.Image = passthroughFilter2.ToImage(UIImageOrientation.Up); break; } }
async partial void OnResampleSelectorChanged (UISegmentedControl sender) { switch (sender.SelectedSegment) { case 0: // Linear downsampling var passthroughFilter = new GPUImageBrightnessFilter (); passthroughFilter.ForceProcessingAtSize (new CGSize (640.0, 480.0)); var linearImageSource = new GPUImagePicture (inputImage); linearImageSource.AddTarget (passthroughFilter); passthroughFilter.UseNextFrameForImageCapture (); await linearImageSource.ProcessImageAsync (); imageView.Image = passthroughFilter.ToImage (UIImageOrientation.Up); break; case 1: // Lanczos downsampling var lanczosResamplingFilter = new GPUImageLanczosResamplingFilter (); lanczosResamplingFilter.ForceProcessingAtSize (new CGSize (640.0, 480.0)); var lanczosImageSource = new GPUImagePicture (inputImage); lanczosImageSource.AddTarget (lanczosResamplingFilter); lanczosResamplingFilter.UseNextFrameForImageCapture (); await lanczosImageSource.ProcessImageAsync (); imageView.Image = lanczosResamplingFilter.ToImage (UIImageOrientation.Up); break; case 2: // Trilinear downsampling var passthroughFilter2 = new GPUImageBrightnessFilter (); passthroughFilter2.ForceProcessingAtSize (new CGSize (640.0, 480.0)); var trilinearImageSource = new GPUImagePicture (inputImage, true); trilinearImageSource.AddTarget (passthroughFilter2); passthroughFilter2.UseNextFrameForImageCapture (); await trilinearImageSource.ProcessImageAsync (); imageView.Image = passthroughFilter2.ToImage (UIImageOrientation.Up); break; } }
async partial void OnFilterSelectorChanged(UISegmentedControl sender) { switch (sender.SelectedSegment) { case 0: // Set up a manual image filtering chain var vignetteFilter = new GPUImageVignetteFilter(); vignetteFilter.VignetteEnd = 0.6f; vignetteFilter.VignetteStart = 0.4f; var sepiaFilter = new GPUImageSepiaFilter(); sepiaFilter.AddTarget(vignetteFilter); var imageSource = new GPUImagePicture(inputImageUrl); imageSource.AddTarget(sepiaFilter); vignetteFilter.UseNextFrameForImageCapture(); await imageSource.ProcessImageAsync(); using (var currentImage = vignetteFilter.ToImage()) using (var pngData = currentImage.AsPNG()) { pngData.Save(path1, true); } imageView.Image = UIImage.FromFile(path1); break; case 1: // Do a simpler image filtering var imageFilter = new GPUImageSketchFilter(); using (var quickFilteredImage = imageFilter.CreateFilteredImage(inputImage)) using (var pngData = quickFilteredImage.AsPNG()) { pngData.Save(path2, true); } imageView.Image = UIImage.FromFile(path2); break; } }
async partial void OnFilterSelectorChanged (UISegmentedControl sender) { switch (sender.SelectedSegment) { case 0: // Set up a manual image filtering chain var vignetteFilter = new GPUImageVignetteFilter (); vignetteFilter.VignetteEnd = 0.6f; vignetteFilter.VignetteStart = 0.4f; var sepiaFilter = new GPUImageSepiaFilter (); sepiaFilter.AddTarget (vignetteFilter); var imageSource = new GPUImagePicture (inputImageUrl); imageSource.AddTarget (sepiaFilter); vignetteFilter.UseNextFrameForImageCapture (); await imageSource.ProcessImageAsync (); using (var currentImage = vignetteFilter.ToImage ()) using (var pngData = currentImage.AsPNG ()) { pngData.Save (path1, true); } imageView.Image = UIImage.FromFile (path1); break; case 1: // Do a simpler image filtering var imageFilter = new GPUImageSketchFilter (); using (var quickFilteredImage = imageFilter.CreateFilteredImage (inputImage)) using (var pngData = quickFilteredImage.AsPNG ()) { pngData.Save (path2, true); } imageView.Image = UIImage.FromFile (path2); break; } }