Android:如何计算图像的纵横比?

Posted

技术标签:

【中文标题】Android:如何计算图像的纵横比?【英文标题】:Android : How to calculate aspect ratio of images? 【发布时间】:2015-10-12 07:13:31 【问题描述】:

我有 100 张大尺寸的图像 (500*700 , 401*800 , 2345* 3567) ,所以我希望所有这些图像的高度都与 220 相同。下面我正在实现图像纵横比的计算。我想设置所有大尺寸图像的固定高度。我正在使用一些算术公式来计算纵横比,但让所有图像宽度相同,高度不同,但我希望高度固定。如何获得固定高度?感谢感谢。

这是我的图像纵横比计算代码

if (bitmapResizeImage != null) 
    int originalWidth = bitmapResizeImage.getWidth();
    int originalHeight = bitmapResizeImage.getHeight();
    Log.e("originalWidth "," = " + originalWidth +" originalHeight = " + originalHeight+" of imgElement = " + imgElement+ " Notation = " +all_Post.getStrNotationNo());

    float aspect_ratio = originalWidth / originalHeight ;
    Log.e("aspect_ratio "," = " + aspect_ratio);

    float adjusted_width = 220 * originalWidth / originalHeight ;
    Log.e("adjusted_width "," = " + adjusted_width);
    float adjusted_height = originalWidth * originalHeight / originalWidth ;
    Log.e("adjusted_height "," = " + adjusted_height);

    pBar.setVisibility(View.GONE);
    imageView.setImageBitmap(bitmapResizeImage);

【问题讨论】:

你在 logcat 中看到了什么关于 aspect_ratio 的内容? 这个公式可以用一些基本的数学来简化:originalWidth * originalHeight / originalWidth 所以更正它是一个正确的值 【参考方案1】:

你或许应该试试typecasting:

float aspect_ratio = (float)originalWidth / (float)originalHeight ;

因为这个类型转换操作会返回一个浮点值。

整数除以整数将得到整数形式的结果,该整数将分配给浮点变量。因此需要将操作数转换为浮点数,以确保计算结果为浮点数。

【讨论】:

我已经使用你的代码行进行了更改。但即使没有得到适当的宽度和高度。表示高度宽度。 float aspect_ratio = (float)originalWidth / (float)originalHeight ;float newImageWidth = aspect_ratio * (float)originalWidth ;是这样吗? 是的,没错。检查 originalWidth 和 originalHeight 中的值是否正确【参考方案2】:

除了 Priyank 发布的内容之外,一旦您拥有正确的价值观 您可以在 ImageView 上使用 setImageBitmap 之前创建具有新尺寸的位图。使用

imageView.setImageBitmap(Bitmap.createBitmap(int width, int height, Bitmap.Config config));

【讨论】:

以上是关于Android:如何计算图像的纵横比?的主要内容,如果未能解决你的问题,请参考以下文章

重建图像中矩形对象的纵横比

为啥传感器尺寸的纵横比和图像分辨率的纵横比不同?

如何在没有纵横比的情况下在 SVG 中保持图像的纵横比

图像的 UIPageViewController 如何在方向改变时保持图像的纵横比?

如何保持并排图像的纵横比,保持图像高度相同并在图像之间固定填充?

如何使用“包含”选项调整图像的大小,但保留原始尺寸的纵横比?