如何缩小固定宽度的缩小照片?

时间:2019-02-08 10:10:52

标签: android android-camera android-camera2

我使用fotoapparat.io library拍摄照片。由于我不需要12或15兆像素的完整分辨率,因此我想将图像缩小到“ 768 x H”,而H是我的高度,取决于相机的宽高比。通常为4:3,即576像素。

均未调用:

 photoResult.toBitmap(
                    new Function1<Resolution, Resolution>() {
                        @Override
                        public Resolution invoke(Resolution resolution) {
                            float scale = (float) 768 / resolution.width;
                            return scaled(scale).invoke(resolution);
                        }
                    }
            ) 

不缩放:

    photoResult.toBitmap(
        new Function1<Resolution, Resolution>() {
            @Override
            public Resolution invoke(Resolution resolution) {
                int height = 768;
                int width = 576;
                Resolution r = new Resolution(width, height);
                return scaled(1.0F).invoke(r);
            }
        }
    )

为我提供了帮助。对于第二个示例,当使用固定的1.0F作为缩放因子时,它会使图像失真。或以4/3作为比例因子,图像具有良好的比例,但随后被缩小到576 x 432像素。

如何在不影响其他摄像机的纵横比的情况下将图像缩小到固定宽度?

2 个答案:

答案 0 :(得分:0)

我有Java代码来重新缩放位图。我用它来将图像缩小到“ 600 x H”。

 dis = new DataInputStream(is);
 while(dis.available()>0) {

            // read four bytes from data input, return int
            int k = dis.readInt();

            // print int
            System.out.print(k+" ");
         }

答案 1 :(得分:0)

除了 TakeInfo 答案之外,您还应该存储尽可能小的图像,但是可以随时通过更改ImageView参数来调整图像大小

ImageView.getLayoutParams().width = your_width;
ImageView.getLayoutParams().height = your_height;

这是ImageView小部件的示例,对我有用

<ImageView
    android:id="@+id/my_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"
    android:layout_margin="5dp"
    android:layout_gravity="center"
    />