Skip to content

Instantly share code, notes, and snippets.

@rdelrosario
Created June 16, 2017 14:59
Show Gist options
  • Save rdelrosario/937f515c0a4b846f013d14777eb5743e to your computer and use it in GitHub Desktop.
Save rdelrosario/937f515c0a4b846f013d14777eb5743e to your computer and use it in GitHub Desktop.
ApplyFilter
async void ApplyFilter(FilterType filterType)
{
if (currentFilterType == filterType)
return;
var filterImage = Element as FilterImage;
var handler = GetHandler(filterImage.OriginalSource);
using (UIImage originalImage = await handler.LoadImageAsync(filterImage.OriginalSource))
{
switch (filterType)
{
case FilterType.NoFilter:
filteredImage = UIImage.FromImage(originalImage.CGImage, originalImage.CurrentScale, originalImage.Orientation);
break;
case FilterType.BlackAndWhite:
var blackAndWhiteEffect = new CIPhotoEffectMono()
{
Image = new CoreImage.CIImage(originalImage)
};
filteredImage = ApplyEffect(blackAndWhiteEffect, originalImage);
break;
case FilterType.Hifi:
var hifiControls = new CIColorControls()
{
Image = new CoreImage.CIImage(originalImage),
Brightness = .5F, // Min: 0 Max: 2
Saturation = 1.2F, // Min: -1 Max: 1
Contrast = 2.5F // Min: 0 Max: 4
};
filteredImage = ApplyEffect(hifiControls, originalImage);
break;
case FilterType.Vintage:
var vintageEffect = new CIPhotoEffectChrome()
{
Image = new CoreImage.CIImage(originalImage)
};
filteredImage = ApplyEffect(vintageEffect, originalImage);
break;
case FilterType.Saturated:
var saturatedEffect = new GPUImageSaturationFilter();
saturatedEffect.Saturation = 2.5f;
var imageFiltered = saturatedEffect.CreateFilteredImage(originalImage);
filteredImage = imageFiltered;
break;
}
Control.Image = filteredImage;
currentFilterType = filterType;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment