content: package com.alibaba.android.qrcode.extension.core;
  
  import android.content.Context;
  import android.graphics.Bitmap;
  import android.graphics.Canvas;
  import android.graphics.Matrix;
  import android.graphics.Paint;
  import android.graphics.Point;
  import android.graphics.PorterDuff;
  import android.graphics.PorterDuffColorFilter;
  import android.util.TypedValue;
  import android.view.Display;
  import android.view.WindowManager;
  
  class CodeUtils {
  
      static Point getScreenResolution(Context context) {
          WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
          Display display = wm.getDefaultDisplay();
          Point screenResolution = new Point();
          if (android.os.Build.VERSION.SDK_INT >= 13) {
              display.getSize(screenResolution);
          } else {
              screenResolution.set(display.getWidth(), display.getHeight());
          }
          return screenResolution;
      }
  
      static int dp2px(Context context, float dpValue) {
          return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, context.getResources().getDisplayMetrics());
      }
  
      static int sp2px(Context context, float spValue) {
          return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue, context.getResources().getDisplayMetrics());
      }
  
      static Bitmap adjustPhotoRotation(Bitmap inputBitmap, int orientationDegree) {
          if (inputBitmap == null) {
              return null;
          }
  
          Matrix matrix = new Matrix();
          matrix.setRotate(orientationDegree, (float) inputBitmap.getWidth() / 2, (float) inputBitmap.getHeight() / 2);
          float outputX, outputY;
          if (orientationDegree == 90) {
              outputX = inputBitmap.getHeight();
              outputY = 0;
          } else {
              outputX = inputBitmap.getHeight();
              outputY = inputBitmap.getWidth();
          }
  
          final float[] values = new float[9];
          matrix.getValues(values);
          float x1 = values[Matrix.MTRANS_X];
          float y1 = values[Matrix.MTRANS_Y];
          matrix.postTranslate(outputX - x1, outputY - y1);
          Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap.getHeight(), inputBitmap.getWidth(), Bitmap.Config.ARGB_8888);
          Paint paint = new Paint();
          Canvas canvas = new Canvas(outputBitmap);
          canvas.drawBitmap(inputBitmap, matrix, paint);
          return outputBitmap;
      }
  
      static Bitmap makeTintBitmap(Bitmap inputBitmap, int tintColor) {
          if (inputBitmap == null) {
              return null;
          }
  
          Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap.getWidth(), inputBitmap.getHeight(), inputBitmap.getConfig());
          Canvas canvas = new Canvas(outputBitmap);
          Paint paint = new Paint();
          paint.setColorFilter(new PorterDuffColorFilter(tintColor, PorterDuff.Mode.SRC_IN));
          canvas.drawBitmap(inputBitmap, 0, 0, paint);
          return outputBitmap;
      }
  }