2013-05-04 4 views
0

ImageButton을 가지고 있는데, 그것을 누르면 휴대폰으로 사진을 찍을 수 있습니다. 사진을 찍을 때 ImageButtons는 사진을 소스로 가져옵니다. 그러나 문제는 이미지가 ImageButton의 크기로 축소되지 않는다는 것입니다. 이미지를 축소하는 대신 이미지의 일부만 보여줍니다. 약간의 연구를 한 후에 나는 당신이 무승부 9 패치를 사용해야한다는 것을 알았다. 그러나 이미지는 내 리소스에 없기 때문에이 경우에는 불가능합니다. 리소스 자체는 사용자가 만듭니다.방금 ​​이미지를 이미지 버튼에 맞추기

누군가가 도와 줄 수 있습니까?

내 코드 :

if (requestCode == REQUEST_CAMERA) { 
    File f = new File(Environment.getExternalStorageDirectory().toString()); 
    for (File temp : f.listFiles()) { 
     if (temp.getName().equals("temp.jpg")) { 
      f = temp; 
      break; 
     } 
    } 

    try { 
     Bitmap bm; 
     BitmapFactory.Options btmapOptions = new BitmapFactory.Options(); 
     bm = BitmapFactory.decodeFile(f.getAbsolutePath(),btmapOptions); 
     // bm = Bitmap.createScaledBitmap(bm, 70, 70, true); 
     btnImg.setImageBitmap(bm); 
     String path = android.os.Environment.getExternalStorageDirectory() + File.separator + "Phoenix" + File.separator + "default"; 
     f.delete(); 
     OutputStream fOut = null; 
     File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg"); 

     try { 
       fOut = new FileOutputStream(file); 
      bm.compress(Bitmap.CompressFormat.JPEG, 85, fOut); 
      fOut.flush(); 
      fOut.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } catch (Exception e) { 
      e.printStackTrace(); 
     } 
      } 
} 
else if (requestCode == SELECT_FILE) { 
Uri selectedImageUri = data.getData(); 
String tempPath = getPath(selectedImageUri, MainActivity.this); 
Bitmap bm; 
BitmapFactory.Options btmapOptions = new BitmapFactory.Options(); 
bm = BitmapFactory.decodeFile(tempPath, btmapOptions); 
btnImg.setImageBitmap(bm); 
} 

답변

0

를 사용하여 이미지 뷰의 방법 setScaleType. 매개 변수로 ScaleType.CENTER_INSIDE을 전달하십시오.

btnImg.setImageBitmap(bm); 
btnImg.setScaleType(ScaleType.CENTER_INSIDE); 
+0

이것은 두 번째 이미지를 삽입 한 후 나에게 적합하지만 응용 프로그램이 충돌합니다. 관련이 있습니까, 아니면 새로운 질문을해야합니까? – mXX

+0

은 OutOfMemoryException이어야합니다. 새 질문을 추가하십시오. – Ronnie