Android 截取圖片正中間

dfd7 8年前發布 | 1K 次閱讀 Java Android

功能:給定圖片維持寬高比縮放后,截取正中間的正方形部分

    /**

   * @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;  
  }  </pre> 


 本文由用戶 dfd7 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!