2013-07-03 2 views
0

내 앱에서 카메라를 사용하여 사진을 찍고 특정 이메일 주소로 사진을 이메일로 보냅니다. 이제 전자 메일로 찍은 사진의 실제 크기가 너비가 10cm, 높이가 8cm가되기를 바랍니다. 문서 당으로서x cm 너비와 y cm 높이의 비트 맵

final BitmapFactory.Options opts = new BitmapFactory.Options(); 
    opts.inSampleSize = 2; 
    final ImageView thumbNail = (ImageView)findViewById(R.id.imageView3); 
    thumbNail.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

     @Override 
     public void onGlobalLayout() { 
      // TODO Auto-generated method stub 
      thumbNail.setImageBitmap(Bitmap.createScaledBitmap (BitmapFactory.decodeFile(myPhoto.getPath(), opts), thumbNail.getWidth(), thumbNail.getHeight(), false)); 
     } 
    }); 

: Java 파일의 뒷부분

<ImageView 
    android:id="@+id/imageView3" 
    android:layout_width="100mm" 
    android:layout_height="80mm" 
    android:src="@drawable/ic_launcher" /> 

2) :

1) 아래와 같이 XML에 이미지 뷰를 선언 다음 내가 시도 코드는 결과 비트 맵은 너비가 10cm이고 높이가 8cm 여야합니다. 하지만 XML 파일에는이 줄에 경고가 있습니다.

android:layout_width="100mm" 
    android:layout_height="80mm" 
    Avoid using "mm" as units (it does not work accurately on all devices); use "dp" instead. 

그래서 내가해야 할 일에 대한 단서가 없습니다. 모든 장치에서 작동하는 솔루션을 제공해주십시오.

+0

화면 크기가 작은 장치에 이미지가 어떻게 표시 되겠지만 경고 메시지는 무시해도됩니까? – WarrenFaith

+0

무시할 수 있지만 일부 장치에서 작동하지 않으면 어떻게됩니까? 스크롤 뷰에 이미지 뷰를 표시하므로 스크롤 할 수 있습니다. 나는 사용자가 그것을 좋아하지 않을지도 모르지만 차원이 가장 중요하다는 것을 안다. 그 비트 맵을 원하는 차원으로 만들 수있는 다른 방법이 있습니까? 아니면 내 apporach가 괜찮다고 말하는가? – dora

+0

밀도와 화면 해상도를 사용하여 cm/mm을 계산할 수 있습니다. 이 정보를 사용하여 화면의 크기를 알아야하며 너비/높이를 올바른 값으로 동적으로 설정할 수 있습니다. – WarrenFaith

답변

0

저는 WarrenFaiths 지침을 사용하여 아래의 해결책을 제시했습니다.

DisplayMetrics metrics = activity.getResources().getDisplayMetrics(); 
    totalDIP_X = metrics.xdpi; 
    totalDIP_Y = metrics.ydpi; 

totalDIP_X 및 totalDIP_Y는 전화기의 DIPs 당 총 DIP 수를 나타냅니다.

그래서 1.968inch * 1.968inch에 해당하는 비트 맵을 5cms * 5cms로 만들려면 아래 코드를 사용해야합니다.

imageView1.setImageBitmap(Bitmap.createScaledBitmap (aBitmap, (int)(1.968*totalDIP_X), (int)(1.968*totalDIP_Y), false)); 
1

이것은?

public static int mm2pixels(int val, Context current) { 
    DisplayMetrics metrics = current.getResources().getDisplayMetrics(); 
    return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, val, metrics); 
} 
관련 문제