2016-10-19 7 views
0

내 앱에서 이미지를 클릭 할 때 전체 스크리닝을 구현했습니다. programm에서 이런 식으로 일어납니다 : 나는 imageviews (카메라로 만든 이미지)에서 비트 맵을 다음 활동으로 보내고, 다음 활동은 그것을 받아 들여 이미지 뷰에 비트 맵을 표시합니다. 이미지 뷰가 많고 문제 예를 들어 카메라로 세로로 사진을 만들고 가로 상태로 만들면 프리 베이지 이미지의 전체 화면 이미지가 높이가 압축됩니다. 비트 맵을 다음 활동에 전달하여 스케일링 문제

어떻게 옆 1 명 활성에서 비트 맵을 건네

Bundle extras = getIntent().getExtras(); 
    byte[] b = extras.getByteArray("picture"); 

    Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); 
    ImageView image = (ImageView) findViewById(R.id.full); 
    image.setImageBitmap(bmp); 

폭과 다음 활동 이미지 뷰의 높이 match_parent 인 방법 : 다음 활동하는 비트 맵을 받아

 Bitmap bitmap = params[0]; 
     int h = bm.getHeight(); 
     int w = bm.getWidth(); 
     bitmap = bitmap.createScaledBitmap(bitmap,w/2,h/2, true); 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 50, baos); 
     byte[] b = baos.toByteArray(); 

     Intent intent = new Intent(PhotoAdder.this, FullScreenImage.class); 
     intent.putExtra("picture", b); 
     startActivity(intent); 

.

+0

이미 h/2로 비트 맵을 스케일링했습니다. –

+0

@Dheerubhai, 나도 알아,하지만 마지막 활동 사진에 따라 다음 활동에서 전에 썼던 것처럼 이미지의 크기가 바뀐다. – Bek

+0

이미지의 경로를 얻는 방법으로 다음 활동으로 전달하고 비트 맵을 사용하여 이미지를 다시로드하십시오. – nakul

답변

0

이미지 크기를 조정하려면 하나의 매개 변수 (높이 또는 너비)를 수정하고 다른 매개 변수를 래핑해야합니다. 그러면 안드로이드가 자동으로이를 수행합니다. 따라서 이미지 뷰의 높이와 너비를 적절하게 설정하십시오. 그리고 scaletype도 설정하십시오. 너비가 높이보다 큰지 여부를 런타임에 확인할 수도 있습니다. 프로그래밍 방식으로 width를 match parent 및 height로 지정하고 그 반대로도 설정할 수 있습니다.

ANKIT

0

시도는 메모리에 비트 맵을 계속 방지 할 수 있습니다.
임시 파일에 비트 맵 저장을 시도하고 파일 경로를 다른 활동으로 전달하십시오.

가로 화면에 세로 이미지를 표시하려면 ImageView 스케일 유형을 올바르게 변경해야합니다.

체크 https://stackoverflow.com/a/25069883/2373466

+0

이미지를 수평 상태로 만들기 위해 수평 상태로 만든 경우 원래 상태로 이미지를 표시하고 싶습니다. , 수직 상태와 동일. 불행히도 scaleType을 변경해도 도움이되지 않으면 임시 파일을 통해 비트 맵을 전달하려고합니다. – Bek

+0

@Bek 그러면 이미지의 exif 정보를 확인하고 이미지 크기 유형을 변경하십시오. –