2013-08-04 3 views
0

내 응용 프로그램은 HTTP를 통해 서버에서 이미지를로드하고 파일에 저장합니다. 그런 다음이 코드를 사용하여 Drawable을 가져 와서 확인합니다.서버에서 이미지 크기 조정

File f=new File(path); 
if(f.exists()) { 
    Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath()); 
    if(bmp!=null) { 
     DisplayMetrics dm = m_activity.getResources().getDisplayMetrics(); 
     bmp.setDensity(dm.densityDpi); 
     Drawable drawable=new BitmapDrawable(context.getResources(), bmp); 
     drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 
     return drawable; 
    } 
} 

삼성 Galaxy S2에서 정상적으로 작동합니다. 그러나 삼성 갤럭시 S4에서는이 이미지가 너무 작습니다. S2에

: S4에

SGS2

예를 들어

SGS4

나는 다양한 디스플레이의 해상도를 가진 모든 장치에 동일하게 표시 할 필요가있다. 가능한가? 이것을 구현하는 방법?

+0

안녕 - 기본적인 문제는 더 높은 해상도를 가진 디바이스는 이미지를 표시 할 것입니다 더 작아. "내장"크기를 장치 해상도에 비례하여 조정해야합니다. – paulsm4

+0

@ paulsm4, 답변 해 주셔서 감사합니다! 간단히 설명하면 장치 해상도에 비례하여이 크기를 조정하는 방법은 무엇입니까? 그냥 적은 단어. – BArtWell

+2

시도해주세요. http://stackoverflow.com/questions/17978345/android-image-on-tablets-and-phones/17978396#17978396 – IanB

답변

1

나는 당신을 도울 수 있다고 생각합니다. 나에게는 이와 같은 종류의 문제가 있었다. 당신이해야 할 일은 장치의 크기를 알아 내서 widthOfStandardDevice와 heightOfStandardDevice를 넣는 것입니다. 그러면 새로운 화면이 얼마나 큰지 알게 될 것입니다. , 당신은 모든 것을 곱하기 위해 두 개의 곱셈기를 만들 것입니다. 이제 비트 맵의 ​​크기를 bitmap_width 및 bitmap_height로 설정한다고 말할 수 있습니다.

DisplayMetrics displaymetrics = new DisplayMetrics(); 

getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 

height = displaymetrics.heightPixels; 

width = displaymetrics.widthPixels; 

float widthMultiplier = width/widthOfStandardDevice; 

float heightMultiplier = height/heightOfStandardDevice; 

int bitmap_width = (int)(600 * widthMultiplier); 

int bitmap_height = (int)(800 * heightMultiplier); 
+0

이것이 도움이됩니까? – superuser

+0

@ BArtWell 답변을 수락 할 수 있습니까? – superuser

1

당신이 있기 때문에, 비트 맵을 확장 할 필요가 없습니다 그것을 확장하면 더 많은 메모리를 사용하게 될 것입니다.

대신 imageView에 원하는 크기를 알려주고 원하는 크기로 비트 맵을 표시 할 수 있습니다 (dp 사용). 비트 맵의 ​​크기를 직접 설정하려는 경우 이미지 품질이 중요하거나 this link 경우 속도가 더 중요한 경우

this link을 확인