将位图传递给下一个活动,缩放问题

时间:2016-10-19 05:47:50

标签: android bitmap fullscreen

在我的应用中,我点击它时实现了图像的完整放映。在程序中它以这种方式发生:我将位图从imageviews(由相机制作的图像)通过put extra传递到下一个活动,下一个活动接受它并在imageview中显示位图。我有很多的图像视图,并且问题是例如如果我通过相机拍摄垂直状态的照片,并且如果我在水平状态下制作下一张照片,则前照片图像的全屏图像在高度上被压缩。 / p>

我如何将位图从1个活动传递到下一个:

Public Sub ConvertDateFormat1()
  ' rest of your sub code as it is

下一个活动如何接受位图:

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

下一个活动的imageview的宽度和高度是match_parent。

2 个答案:

答案 0 :(得分:0)

对于缩放图像,您需要修复一个参数(高度或宽度)并包装其他参数,android会自动执行此操作。所以相应地设置你的imageview高度和宽度。并设置scaletype。 除此之外,您还可以在运行时检查宽度是否大于高度以编程方式将宽度设置为匹配父级和高度作为包含内容,反之亦然。

ANKIT

答案 1 :(得分:0)

尽量避免在内存中保留位图。
尝试将位图保存到临时文件并将文件路径传递给另一个活动。

如果要在水平屏幕上显示肖像图像,则必须正确更改(total, i) => total + counters[i] * (counters.ContainsKey(K + i) ? counters[K + i] : 0) 比例尺类型。

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