+-

我有一个位图,它比我要放入的 ImageView大.我将ScaleType设置为center_inside.如何获得缩小图像的尺寸?
最佳答案
好.我可能应该更清楚一些.在将比例位图绘制到屏幕上之前,我需要先对其进行缩放,然后才能在正确的位置绘制一些叠加层.我知道原始位图中叠加层的位置,但不知道缩放比例.我想出了一些简单的公式来计算它们在比例位图上的位置.
如果别人可能有一天需要这样做,我会做些解释.
我得到了位图的原始宽度和高度. ImageView的高度和宽度在335中的xml文件中进行了硬编码.
int bitmap_width = bmp.getWidth();
int bitmap_height = bmp.getHeight();
我确定了哪一个更大,这样我就可以正确地找出计算的基础.对于我当前的示例,宽度较大.由于宽度已缩小到ImageView的宽度,因此我必须找到缩小的高度.我只是将ImageView的宽度与位图的宽度之比乘以位图的高度.最后进行除法是因为首先进行整数除法会得到0的答案.
int scaled_height = image_view_width * bitmap_height / bitmap_width;
使用缩放的高度,我可以使用以下方法确定缩放的位图两侧的空白量:
int blank_space_buffer = (image_view_height - scaled_height) / 2;
为了确定叠加层在比例位图上的放置位置的x和y坐标,我必须使用原始坐标和这些计算出的数字.在此示例中,x坐标很简单.由于缩放的宽度是ImageView的宽度,因此我只需要将ImageView的宽度与位图的宽度之比乘以原始的x坐标即可.
int new_x_coord = image_view_width * start_x / bitmap_width;
y坐标比较棘手.取位图的缩放高度与位图的原始高度之比.将该值与原始y坐标相乘.然后添加空白区域缓冲区.
int new_y_coord = scaled_height * start_y / bitmap_height + blank_space_buffer;
这适合我的需要.如果高度大于宽度,则只需反转width和height变量.
点击查看更多相关文章
转载注明原文:android-ImageView位图比例尺尺寸 - 乐贴网