将BITMAP调整为较低的分辨率

时间:2019-04-10 14:42:33

标签: android

在尝试降低使用三星平板电脑拍摄的图像的分辨率时遇到问题。从我创建的自定义相机拍摄时,实际图像大小为1932 x 2576。当我尝试将分辨率更改为960 x 720时,图像会拉伸。但是,如果我将分辨率设置为720 x 960,则图像很好。不拉伸就不能改变宽度和高度吗?

我得到一个位图并尝试了这个:

Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap,960,720,true);

我也尝试过:

public Bitmap getResizedBitmap(Bitmap image) {
        int width = image.getWidth();
        int height = image.getHeight();
        float scaleWidth = ((float) 960) / width;
        // create a matrix for the manipulation
        float scaleHeight = ((float) 720) / height;
        Matrix matrix = new Matrix();
        // resize the bit map
        matrix.postScale(scaleWidth, scaleHeight);
        // recreate the new Bitmap
        Bitmap resizedBitmap = Bitmap.createBitmap(image, 0, 0, width, height, matrix, false );
        image.recycle();
        return resizedBitmap;
    }

这是我得到的结果:

actual image

这是我期望的结果:

expected image

我见过一些帖子问同样的问题,但是它们都得到了我尝试过的类似答案。我也认为这是因为相机本身的分辨率是高度大于宽度的,如果我尝试宽度大于高度,会不会起作用?谢谢。

1 个答案:

答案 0 :(得分:0)

您必须使用相同的宽高比。

--- title: "Untitled" author: "Myname" date: "5 April 2019" output: html_document: keep_md: yes number_sections: yes toc: yes toc_depth: 2 self_contained: false pdf_document: number_sections: yes toc: yes toc_depth: '2' --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` text ```{r, echo=FALSE, results='asis'} cat( '![Some text here.](pics/myimage.png', if (knitr::is_html_output()) '?raw=true', '){width=400px}', sep = '' ) ``` text 1932 / 2576相同。这就是为什么您的图像很好。

但是您想使用720 / 960,而不是960 / 720

要计算正确的高度,请使用以下公式:

1932 / 2576

要计算正确的宽度,请使用以下公式:

height = width * 0.75

width = height / 0.75 是因为0.75