2017-03-03 26 views

回答

0
public static PointF getTransparentCenter(Bitmap bitmap, Point viewSize) { 
    List<Point> transparentPoints = new ArrayList<>(); 
    for (int i = 0; i < bitmap.getWidth(); i++) { 
     for (int j = 0; j < bitmap.getHeight(); j++) { 
      int pixel = bitmap.getPixel(i, j); 
      if ((pixel & 0xff000000) == 0) { 
       //the point color is transparent 
       transparentPoints.add(new Point(i, j)); 
      } 
     } 
    } 
    int totalX = 0; 
    int totalY = 0; 
    for (Point transparentPoint : transparentPoints) { 
     totalX += transparentPoint.x; 
     totalY += transparentPoint.y; 
    } 
    float centerX = (float) totalX/transparentPoints.size(); 
    float centerY = (float) totalY/transparentPoints.size(); 
    float x = viewSize.x * centerX/bitmap.getWidth(); 
    float y = viewSize.y * centerY/bitmap.getHeight(); 
    return new PointF(x, y); 
} 

我覺得這很愚蠢,但我認爲沒有別的辦法。

+0

hii謝謝你的評論,我想知道你的意思是愚蠢的?我的問題或你的答案? –

+0

@NavneetSharma我的答案是,它是性能問題。如果要顯示的照片是從您的服務器加載的,我認爲您應該將中心位置數據存儲在您的服務器上,並在響應中包含這些信息。 – WoookLiu

+0

我使用的畫框是png文件格式。 我正試圖爲此問題找到一個編程解決方案。 –

相關問題