Jay*_*Jay 2 android bitmap imageview
我有一个比我正在放入的ImageView大的Bitmap.我将ScaleType设置为center_inside.如何获得缩小图像的尺寸?
Jay*_*Jay 10
好.我可能应该更清楚.我需要缩放的Bitmap的高度和宽度,然后才能将它绘制到屏幕上,这样我就可以在正确的位置绘制一些叠加层.我知道叠加在原始位图中的位置,但不知道缩放的位置.我想出了一些简单的公式来计算它们应该在缩放的位图上的位置.
我会解释我做了什么,万一其他人可能有一天需要这个.
我得到了Bitmap的原始宽度和高度.ImageView的高度和宽度在335的xml文件中进行了硬编码.
int bitmap_width = bmp.getWidth();
int bitmap_height = bmp.getHeight();
Run Code Online (Sandbox Code Playgroud)
我确定哪一个更大,以便我能够正确地找出哪一个基于计算.对于我当前的例子,宽度更大.由于宽度缩小到ImageView的宽度,我必须找到缩小的高度.我只是将ImageView宽度的比例乘以Bitmap的宽度乘以Bitmap的高度.分区是最后完成的,因为整数分区首先会得到0的答案.
int scaled_height = image_view_width * bitmap_height / bitmap_width;
Run Code Online (Sandbox Code Playgroud)
使用缩放高度,我可以使用以下命令确定缩放位图任一侧的空白空间量:
int blank_space_buffer = (image_view_height - scaled_height) / 2;
Run Code Online (Sandbox Code Playgroud)
要确定叠加应该在缩放的位图上的位置的x和y坐标,我必须使用原始坐标和这些计算出的数字.这个例子中的x坐标很简单.由于缩放宽度是ImageView的宽度,我只需要将ImageView宽度与Bitmap宽度的比率乘以原始x坐标.
int new_x_coord = image_view_width * start_x / bitmap_width;
Run Code Online (Sandbox Code Playgroud)
y坐标有点棘手.获取Bitmap的缩放高度与Bitmap原始高度的比率.将该值乘以原始y坐标.然后添加空白区域缓冲区.
int new_y_coord = scaled_height * start_y / bitmap_height + blank_space_buffer;
Run Code Online (Sandbox Code Playgroud)
这适用于我需要的东西.如果高度大于宽度,则只需反转宽度和高度变量.
| 归档时间: |
|
| 查看次数: |
9637 次 |
| 最近记录: |