1. 程式人生 > >Android裁剪bitmap檔案為正方形

Android裁剪bitmap檔案為正方形

/**

   * @param bitmap      原圖
   * @param edgeLength  希望得到的正方形部分的邊長
   * @return  縮放擷取正中部分後的點陣圖。
   */
  public static Bitmap centerSquareScaleBitmap(Bitmap bitmap, int edgeLength)
  {
   if(null == bitmap || edgeLength <= 0)
   {
    return  null;
   }

   Bitmap result = bitmap;
   int widthOrg = bitmap.getWidth();
   int
heightOrg = bitmap.getHeight(); if(widthOrg > edgeLength && heightOrg > edgeLength) { //壓縮到一個最小長度是edgeLength的bitmap int longerEdge = (int)(edgeLength * Math.max(widthOrg, heightOrg) / Math.min(widthOrg, heightOrg)); int scaledWidth = widthOrg > heightOrg ? longerEdge : edgeLength; int
scaledHeight = widthOrg > heightOrg ? edgeLength : longerEdge; Bitmap scaledBitmap; try{ scaledBitmap = Bitmap.createScaledBitmap(bitmap, scaledWidth, scaledHeight, true); } catch(Exception e){ return null; } //從圖中擷取正中間的正方形部分。
int xTopLeft = (scaledWidth - edgeLength) / 2; int yTopLeft = (scaledHeight - edgeLength) / 2; try{ result = Bitmap.createBitmap(scaledBitmap, xTopLeft, yTopLeft, edgeLength, edgeLength); scaledBitmap.recycle(); } catch(Exception e){ return null; } } return result; }

需要注的是bitmap引數一定要是從原圖得到的,如果是已經經過BitmapFactory inSampleSize壓縮過的,可能會不是到正方形。