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

How to get down scaled photos with fixed width?

我用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 像素。

如何在不影响不同相机的宽高比的情况下将图像缩小到固定宽度?

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

private Bitmap rescaleBitmap(Bitmap bitmap) {
        float constant = 600.0f / bitmap.getWidth();
        return Bitmap.createScaledBitmap(bitmap, (int) (bitmap.getWidth() * constant),
                (int) (bitmap.getHeight() * constant), true);
    }

除了 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"
    />