package com.codepath.apps.tumblrsnap; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import com.jabistudio.androidjhlabs.filter.BlurFilter; import com.jabistudio.androidjhlabs.filter.ContrastFilter; import com.jabistudio.androidjhlabs.filter.CrystallizeFilter; import com.jabistudio.androidjhlabs.filter.GlowFilter; import com.jabistudio.androidjhlabs.filter.GrayscaleFilter; import com.jabistudio.androidjhlabs.filter.KaleidoscopeFilter; import com.jabistudio.androidjhlabs.filter.LevelsFilter; import com.jabistudio.androidjhlabs.filter.MarbleFilter; import com.jabistudio.androidjhlabs.filter.PinchFilter; import com.jabistudio.androidjhlabs.filter.SolarizeFilter; import com.jabistudio.androidjhlabs.filter.TritoneFilter; import com.jabistudio.androidjhlabs.filter.util.AndroidUtils; public class ImageFilterProcessor { public static final int NONE = 0; public static final int CONTRAST = 1; public static final int GRAYSCALE = 2; public static final int SOLARIZE = 3; public static final int FRACTAL = 4; public static final int MARBLE = 5; public static final int PINCH = 6; public static final int WARP = 7; public static final int BLUR = 8; public static final int CRYSTALLIZE = 9; public static final int TRITONE = 10; public static final int GLOW = 11; Bitmap originalImage; int width; int height; public ImageFilterProcessor(Bitmap originalImage) { this.originalImage = originalImage; this.width = originalImage.getWidth(); this.height = originalImage.getHeight(); } public Bitmap applyFilter(int effectType) { int[] src = AndroidUtils.bitmapToIntArray(originalImage); int[] dest; switch (effectType) { case CONTRAST: ContrastFilter cFilter = new ContrastFilter(); dest = cFilter.filter(src, width, height); break; case GRAYSCALE: GrayscaleFilter gFilter = new GrayscaleFilter(); dest = gFilter.filter(src, width, height); break; case SOLARIZE: SolarizeFilter sFlter = new SolarizeFilter(); dest = sFlter.filter(src, width, height); break; case FRACTAL: KaleidoscopeFilter kFilter = new KaleidoscopeFilter(); dest = kFilter.filter(src, width, height); break; case MARBLE: MarbleFilter mFilter = new MarbleFilter(); dest = mFilter.filter(src, width, height); break; case PINCH: PinchFilter pFilter = new PinchFilter(); dest = pFilter.filter(src, width, height); break; case BLUR: BlurFilter bFilter = new BlurFilter(); dest = bFilter.filter(src, width, height); break; case CRYSTALLIZE: CrystallizeFilter clFilter = new CrystallizeFilter(); dest = clFilter.filter(src, width, height); break; case TRITONE: TritoneFilter ttFilter = new TritoneFilter(); dest = ttFilter.filter(src, width, height); break; case GLOW: GlowFilter glFilter = new GlowFilter(); dest = glFilter.filter(src, width, height); break; default: LevelsFilter lFilter = new LevelsFilter(); dest = lFilter.filter(src, width, height); break; } if (effectType != NONE) { return Bitmap.createBitmap(dest, width, height, Config.ARGB_8888); } else { return originalImage; } } }