2011-05-26 61 views
2

我正在檢測我的應用程序中的一張臉。我使用兩個ImageView,第一個用於臉部,第二個用於遮罩。我需要將蒙版位置設置在計算的臉部位置上,然後可以通過觸摸事件來移動蒙版。對於我使用本教程的觸摸事件:http://blahti.wordpress.com/2011/01/17/moving-views-part-2/使用face將xy位置設置爲imageViewDetection

遮罩縮放方法可以返回臉部位置。我試圖將XY位置設置爲掩碼Imageview,但是在0.0的位置顯示。在臉上。然後我可以將蒙版ImageView移動到臉上。 「看法」是我的面具。理想情況下,我需要在面部位置初始化蒙版imageview。

PD:對不起,我的英語不好。

protected Bitmap draw(int mode) { 

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.c10); 

    int width = bitmap.getWidth(); 
    int height = bitmap.getHeight(); 

    Point position = new Point(); 

    xRatio = anchoCara * 1.0f/anchoCara; 
    yRatio = altoCara * 1.0f/altoCara; 


    Bitmap resizedBitmap = null; 

    float factor = 9.6f;//9.6 

    for (int i = 0; i < eyesMidPts.length; i++) { 
     if (eyesMidPts[i] != null) { 
      pOuterBullsEye.setStrokeWidth(eyesDistance[i]/6); 

      float newWidth = eyesDistance[i] * factor; 
      float newHeight = eyesDistance[i] * factor; 

      float scaleWidth = (newWidth)/width; 
      float scaleHeight = (newHeight)/height; 

      Matrix matrix = new Matrix(); 
      matrix.postScale(scaleWidth, scaleHeight); 

      resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, 
        height, matrix, true); 

      position.set(
          (int) ((eyesMidPts[i].x * xRatio) - (eyesDistance[i] * factor)),//2 
          (int) ((eyesMidPts[i].y * yRatio) - (eyesDistance[i] * factor))); 

      Log.e("Face", "positio x : " + position.x); 
      Log.e("Face", "positio y : " + position.y); 


      Log.e("Face", "mascara width : " + resizedBitmap.getWidth()); 
      Log.e("Face", "mascara heigth : " + resizedBitmap.getHeight()); 
//    view.setBackgroundDrawable(new BitmapDrawable(resizedBitmap)); 
//    view.setAdjustViewBounds(true); 
//    Log.i("Face", "positio x : " + view.getScrollX()); 
//    Log.i("Face", "positio y : " + view.getScrollY()); 
     } 
    } 
    return resizedBitmap; 
} 
+1

我讀得太快了,以爲問題標題爲「性感的位置」。完全失望。 – 2011-05-26 20:57:38

回答

2

最後我沒有用下面的代碼:

@Override 
public void onGlobalLayout() { 
    // TODO Auto-generated method stub 
    faceDetect(MODO_VIEW);  
    Display m=getWindowManager().getDefaultDisplay(); 
    anchoPant=m.getWidth(); 
    Log.i("Face","separacion derecha: "+((anchoPant-cara.getWidth())/2)+"px"); 
    MyAbsoluteLayout.LayoutParams mp=new MyAbsoluteLayout.LayoutParams(MyAbsoluteLayout.LayoutParams.WRAP_CONTENT, MyAbsoluteLayout.LayoutParams.WRAP_CONTENT, (anchoPant-cara.getWidth())/2, 0); 
    cara.setLayoutParams(mp); 

    //view.setBackgroundDrawable(new BitmapDrawable(draw(MODO_VIEW)));  
    view.setImageBitmap(draw(MODO_VIEW));  
    MyAbsoluteLayout.LayoutParams lp=new MyAbsoluteLayout.LayoutParams(MyAbsoluteLayout.LayoutParams.WRAP_CONTENT,MyAbsoluteLayout.LayoutParams.WRAP_CONTENT,position.x+((anchoPant-cara.getWidth())/2),position.y); 
    view.setLayoutParams(lp); 
    view.getViewTreeObserver().removeGlobalOnLayoutListener(this); 

} 

在我的問題,該方法可以返回的位置,然後使用MyAbsoluteLayout.LayoutParams超過OnGlobalLayout()我可以設置XY位置沒有問題。

相關問題