コード例 #1
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            RequestWindowFeature(WindowFeatures.NoTitle);

            SetContentView(Resource.Layout.Main);

            _colorMatrix = new ColorMatrix();
            _colorMatrixFilter = new ColorMatrixColorFilter(_colorMatrix);

            _paint = new Paint();
            _paint.SetColorFilter(_colorMatrixFilter);

            var contrast = FindViewById<SeekBar>(Resource.Id.contrast);
            contrast.KeyProgressIncrement = 1;
            contrast.ProgressChanged += ContrastChanged;

            var brightness = FindViewById<SeekBar>(Resource.Id.brightness);
            brightness.KeyProgressIncrement = 1;
            brightness.ProgressChanged += BrightnessChanged;

            var saturation = FindViewById<SeekBar>(Resource.Id.saturation);
            saturation.KeyProgressIncrement = 1;
            saturation.ProgressChanged += SaturationChanged;

            var imageSelector = FindViewById<Button>(Resource.Id.selectImage);
            imageSelector.Click += ImagesSelectorClick;

            _imageViewer = FindViewById<ImageView>(Resource.Id.imageViewer);
        }
コード例 #2
0
		public static Bitmap ToGrayscale(Bitmap source)
		{
			using (var colorMatrix = new ColorMatrix())
			{
				colorMatrix.SetSaturation(0f);
				return ColorSpaceTransformation.ToColorSpace(source, colorMatrix);
			}
		}
コード例 #3
0
		public ColorSpaceTransformation(float[][] rgbawMatrix)
		{
			if (rgbawMatrix.Length != 5 || rgbawMatrix.Any(v => v.Length != 5))
				throw new ArgumentException("Wrong size of RGBAW color matrix");

			_colorMatrix = new ColorMatrix();
			RGBAWMatrix = rgbawMatrix;
		}
コード例 #4
0
		public static Bitmap ToSepia(Bitmap source)
		{
			using (ColorMatrix saturation = new ColorMatrix())
			using (ColorMatrix rgbFilter = new ColorMatrix())
			{
				saturation.SetSaturation(0f);
				rgbFilter.SetScale(1.0f, 0.95f, 0.82f, 1.0f);
				saturation.SetConcat(rgbFilter, saturation);
				return ColorSpaceTransformation.ToColorSpace(source, saturation);
			}
		}
コード例 #5
0
		public static Bitmap ToColorSpace(Bitmap source, ColorMatrix colorMatrix)
		{
			int width = source.Width;
			int height = source.Height;

			Bitmap bitmap = Bitmap.CreateBitmap(width, height, source.GetConfig());

			using (Canvas canvas = new Canvas(bitmap))
			using (Paint paint = new Paint())
			{
				paint.SetColorFilter(new ColorMatrixColorFilter(colorMatrix));
				canvas.DrawBitmap(source, 0, 0, paint);

				return bitmap;	
			}
		}
コード例 #6
0
        public static Bitmap ToGreyScale(this Bitmap bmp)
        {
            if (bmp == null) return null;

            var height = bmp.Height;
            var width = bmp.Width;
            var bmpGrayscale = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888);
            var canvas = new Canvas(bmpGrayscale);
            var paint = new Paint();
            var cm = new ColorMatrix();
            cm.SetSaturation(0);
            var filter = new ColorMatrixColorFilter(cm);
            paint.SetColorFilter(filter);
            canvas.DrawBitmap(bmp, 0, 0, paint);
            return bmpGrayscale;
        } 
コード例 #7
0
        protected override Bitmap Transform(Bitmap source)
        {
            int width = source.Width;
            int height = source.Height;

            Bitmap bitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888);

            Canvas canvas = new Canvas(bitmap);
            ColorMatrix saturation = new ColorMatrix();
            saturation.SetSaturation(0f);
            Paint paint = new Paint();
            paint.SetColorFilter(new ColorMatrixColorFilter(saturation));
            canvas.DrawBitmap(source, 0, 0, paint);
            source.Recycle();

            return bitmap;
        }
コード例 #8
0
		protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
		{
			base.OnElementChanged(e);

			if (Element == null)
			{
				return;
			}

			var matrixColor = new ColorMatrix();

			filterColor = new ColorMatrixColorFilter(matrixColor);

			var matrixGray = new ColorMatrix();

			matrixGray.SetSaturation(0);

			filterGray = new ColorMatrixColorFilter(matrixGray);
		}
コード例 #9
0
        protected override void OnCreate(Bundle bundle)
        {
            _bitmap = BitmapFactory.DecodeResource(Resources, Resource.Drawable.image_for_cropping);
            base.OnCreate (bundle);

            _mainLayout = new MainLayout (this);
            _mainLayout.ImageView.SetBitmap (_bitmap);

            var filter = new ColorMatrix ();
            filter.SetScale (1, 1, 1, 1);
            _mainLayout.ImageView.SetFilter (filter);

            SetContentView (_mainLayout);

            _mainLayout.RedSeek.Progress = _mainLayout.GreenSeek.Progress  = _mainLayout.BlueSeek.Progress = _mainLayout.AlphaSeek.Progress = 50;

            _mainLayout.RedSeek.StopTrackingTouch += OnChangeSeek;
            _mainLayout.GreenSeek.StopTrackingTouch += OnChangeSeek;
            _mainLayout.BlueSeek.StopTrackingTouch += OnChangeSeek;
            _mainLayout.AlphaSeek.StopTrackingTouch += OnChangeSeek;
            _mainLayout.LoadImage.Click += LoadImage;
        }
コード例 #10
0
        public Bitmap Transform(Bitmap source)
        {
            Bitmap result = Bitmap.CreateBitmap(source.Width, source.Height, source.GetConfig());
            Bitmap noise;
            try
            {
                noise = picasso.Load(Resource.Drawable.noise).Get();
            }
            catch (Exception)
            {
                throw new Exception("Failed to apply transformation! Missing resource.");
            }

            BitmapShader shader = new BitmapShader(noise, Shader.TileMode.Repeat, Shader.TileMode.Repeat);

            ColorMatrix colorMatrix = new ColorMatrix();
            colorMatrix.SetSaturation(0);
            ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix);

            Paint paint = new Paint(PaintFlags.AntiAlias);
            paint.SetColorFilter(filter);

            Canvas canvas = new Canvas(result);
            canvas.DrawBitmap(source, 0, 0, paint);

            paint.SetColorFilter(null);
            paint.SetShader(shader);
            paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Multiply));

            canvas.DrawRect(0, 0, canvas.Width, canvas.Height, paint);

            source.Recycle();
            noise.Recycle();

            return result;
        }
コード例 #11
0
 //float red, float green, float blue, float alpha)
 public void SetFilter(ColorMatrix filter)
 {
     _filter = filter;
     Invalidate ();
 }
コード例 #12
0
		public static Bitmap ToColorSpace(Bitmap source, ColorMatrix colorMatrix)
		{
			var config = source.GetConfig();
            		if (config == null)
                		config = Bitmap.Config.Argb8888;    // This will support transparency
			
			int width = source.Width;
			int height = source.Height;

			Bitmap bitmap = Bitmap.CreateBitmap(width, height, config);

			using (Canvas canvas = new Canvas(bitmap))
			using (Paint paint = new Paint())
			{
				paint.SetColorFilter(new ColorMatrixColorFilter(colorMatrix));
				canvas.DrawBitmap(source, 0, 0, paint);

				return bitmap;	
			}
		}
コード例 #13
0
		public ColorSpaceTransformation(ColorMatrix colorMatrix)
		{
			_colorMatrix = colorMatrix;
		}
コード例 #14
0
        private ImageView GetBrushImageWithColor(ImageView brushImage, Android.Graphics.Color color)
        {
            ImageView toReturn = new ImageView (context);
            using (Bitmap sourceBitmap = brushImage.DrawingCache) {
                if (sourceBitmap != null) {
                    float R = (float)color.R;
                    float G = (float)color.G;
                    float B = (float)color.B;

                    float[] colorTransform =
                {
                    R / 255f  ,0         ,0       ,0,  0,                 // R color
                    0,          G / 255f   ,   0      ,0  ,0                      // G color
                    ,0    ,0 ,          B / 255f, 0, 0                        // B color
                    ,0    ,0             ,0          ,1f  ,0f
                };

                    ColorMatrix colorMatrix = new ColorMatrix ();
                    colorMatrix.SetSaturation (0f); //Remove Colour

                    colorMatrix.Set (colorTransform);
                    ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter (colorMatrix);
                    Paint paint = new Paint ();
                    paint.SetColorFilter (colorFilter);

                    Bitmap mutableBitmap = sourceBitmap.Copy (Bitmap.Config.Argb8888, true);
                    toReturn.SetImageBitmap (mutableBitmap);
                    Canvas canvas = new Canvas (mutableBitmap);
                    canvas.DrawBitmap (mutableBitmap, 0, 0, paint);
                }
            }
            return toReturn;
        }
コード例 #15
0
        public ColorFilter(View parent, ColorMatrix cm)
        {
            CFilter = new ColorMatrixColorFilter(cm);

            Parent = parent;
        }
コード例 #16
0
        public static Bitmap changeBitmapContrastBrightness (Bitmap bmp, float contrast, float brightness)
        {
            ColorMatrix cm = new ColorMatrix (new float[] {
                contrast, 0, 0, 0, brightness,
                0, contrast, 0, 0, brightness,
                0, 0, contrast, 0, brightness,
                0, 0, 0, 1, 0
            });
            cm.SetSaturation (0);

            Bitmap ret = Bitmap.CreateBitmap (bmp.Width, bmp.Height, bmp.GetConfig ());

            Canvas canvas = new Canvas (ret);

            Paint paint = new Paint ();
            paint.SetColorFilter (new ColorMatrixColorFilter (cm));
            canvas.DrawBitmap (bmp, 0, 0, paint);

            return ret;
        }
コード例 #17
0
        private void OnChangeSeek(object sender, Android.Widget.SeekBar.StopTrackingTouchEventArgs e)
        {
            float scailR = 2f * _mainLayout.RedSeek.Progress / 100F;
            float scailG = 2f * _mainLayout.GreenSeek.Progress / 100F;
            float scailB = 2f * _mainLayout.BlueSeek.Progress / 100F;
            float scailA = 2f * _mainLayout.AlphaSeek.Progress / 100F;

            var filter = new ColorMatrix ();
            filter.SetScale (scailR, scailG, scailB, scailA);

            _mainLayout.ImageView.SetFilter (filter);

            _mainLayout.TextView.Text = "R: " + scailR + " | G: " + scailG + " | B : " + scailB + " | A: " + scailA;
        }