2016-10-19 21 views
0

在我的應用程序中,當您點擊它時,我已經實現了對圖像的全面篩選。在程序中它通過這種方式發生:我將來自圖像瀏覽器(通過相機制作的圖像)的位圖通過放置額外傳遞給下一個活動,下一個活動接受它並在圖像視圖中顯示位圖。我有很多imageviews,並且問題是例如如果我用相機制作垂直狀態的圖片,並且如果下一張圖片處於水平狀態,則以前圖像的全屏圖像變得高度壓縮。將位圖傳遞給下一個活動,縮放問題

如何我通過位圖從1個活性到下一個:

 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); 

活動如何下接受位圖:

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); 

寬度和下一個活動的imageview的高度是match_parent。

+0

您已經通過h/2縮放位圖。 –

+0

@Dheerubhai,我知道,但在接下來的活動中,取決於上次製作的圖片,它改變了圖像的比例,正如我以前寫的。 – Bek

+0

任何你將獲得圖像路徑的方法你只需將它傳遞給下一個活動並使用位圖再次加載圖像 – nakul

回答

0

對於縮放圖像,您需要修復一個參數(高度或寬度)幷包裝另一個參數,android會自動執行該操作。所以請相應地設置您的imageview高度和寬度。並設置scaletype。 除此之外,您還可以在運行時檢查寬度是否大於高度,以編程方式將寬度設置爲與wrapcontent匹配的父級和高度,反之亦然。

ANKIT

0

儘量避免位保持在內存中。
嘗試將位圖保存到臨時文件並將文件路徑傳遞給其他活動。

如果要在水平屏幕上顯示縱向圖像,則必須正確更改ImageView比例類型。

檢查https://stackoverflow.com/a/25069883/2373466

+0

我想以原始狀態顯示圖像,如果圖像處於水平狀態以使其顯示爲水平狀態,與垂直狀態相同。不幸的是,改變scaleType沒有幫助,我會嘗試通過臨時文件傳遞位圖。 – Bek

+0

@Bek然後檢查圖像的exif信息並更改圖像縮放類型。 –

相關問題