2017-03-03 9 views
-1

私は画像の透明領域の中央にボタンを追加する必要があるという問題があります。Androidでpng画像ファイルの透明領域の中心点を見つける方法

例:

enter image description here

上記画像に係るiはフォトフレームの数百を持っており、各フレームは、透明領域があると私は、この透明領域の中心のボタンを追加する必要があります。

今私は "x"の座標をプログラマチックに得ることができる解決策が必要です。 助けてください。

答えて

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

コメントありがとうございました。私はあなたが愚かで何を意味するのか知りたいですか?私の質問かあなたの答え? –

+0

@NavneetSharma私の答えは、パフォーマンスの問題です。表示する写真がサーバーから読み込まれている場合は、センターの位置情報をサーバーに保存し、応答内にこれらの情報を含める必要があります。 – WoookLiu

+0

私のdrawablesから使用しているフォトフレームとは、pngファイル形式です。 私はこの問題のプログラム的な解決策を見つけようとしています。 –

関連する問題