Skip to content
Snippets Groups Projects
Select Git revision
  • 649d49f1e8a33b5e87181f16854f4c37ddf828b2
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • release/201811
  • release/201808
  • wip/patches_poly_2017/cedryk_doucet/abderahmane_bouziane
  • releases/beta1
  • android/release_463
  • android/release_462
  • android/release_461
  • android/release_460
  • android/release_459
  • android/release_458
  • android/release_457
  • android/release_456
  • android/release_455
  • android/release_454
  • android/release_453
  • android/release_452
  • android/release_451
  • android/release_450
  • android/release_449
  • android/release_448
  • android/release_447
  • android/release_446
  • android/release_445
  • android/release_444
38 results

CropImageUtils.java

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    CropImageUtils.java 2.37 KiB
    /*
     *  Copyright (C) 2004-2016 Savoir-faire Linux Inc.
     *
     *  Author: Romain Bertozzi <romain.bertozzi@savoirfairelinux.com>
     *
     *  This program is free software; you can redistribute it and/or modify
     *  it under the terms of the GNU General Public License as published by
     *  the Free Software Foundation; either version 3 of the License, or
     *  (at your option) any later version.
     *
     *  This program is distributed in the hope that it will be useful,
     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     *  GNU General Public License for more details.
     *
     *  You should have received a copy of the GNU General Public License
     *  along with this program; if not, write to the Free Software
     *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
     */
    
    package cx.ring.utils;
    
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.BitmapShader;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.RectF;
    import android.graphics.Shader;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    
    public class CropImageUtils {
    
        @Nullable
        public static Bitmap cropImageToCircle(@NonNull byte[] bArray) {
            Bitmap bitmap = BitmapFactory.decodeByteArray(bArray, 0, bArray.length);
            if (bitmap != null) {
                return cropImageToCircle(bitmap);
            }
    
            return null;
        }
    
        @Nullable
        public static Bitmap cropImageToCircle(@NonNull Bitmap image) {
            int side = Math.min(image.getWidth(), image.getHeight());
    
            final Bitmap externalBMP = Bitmap.createBitmap(side, side, Bitmap.Config.ARGB_8888);
    
            BitmapShader shader;
            shader = new BitmapShader(image, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
    
            Paint paint = new Paint();
            paint.setAntiAlias(true);
            paint.setShader(shader);
            Canvas internalCanvas = new Canvas(externalBMP);
    
            Paint paintLine = new Paint();
            paintLine.setAntiAlias(true);
            paintLine.setDither(true);
            paintLine.setStyle(Paint.Style.STROKE);
            paintLine.setColor(Color.WHITE);
            internalCanvas.drawOval(
                    new RectF(0, 0, externalBMP.getWidth(), externalBMP.getHeight()),
                    paint);
    
            return externalBMP;
        }
    }