如何沿水平方向将图片等分为两部分并在ImageView中展示
Android 图片水平均分拆分实现方案
核心逻辑是直接操作原始图片的像素数据完成裁剪,全程不针对ImageView控件做任何拆分调整,拆分完成后再将生成的两张独立图片加载到对应控件即可。
实现步骤
- 加载获取原始待处理的Bitmap对象,支持从资源文件、本地存储、网络加载等任意来源获取原图
- 计算拆分尺寸:水平均等拆分时,拆分后单张图片的宽度与原图一致,高度为原图高度的1/2
- 调用系统Bitmap裁剪API,分别提取上下两部分的像素数据,生成两张独立的Bitmap
- 将两张拆分后的Bitmap分别设置到对应的ImageView控件中完成展示
完整实现代码
// 加载原始待拆分图片,可替换为你实际的图片获取来源 Bitmap originalImg = BitmapFactory.decodeResource(getResources(), R.drawable.your_target_image); int imgWidth = originalImg.getWidth(); int imgHeight = originalImg.getHeight(); // 计算单张拆分图的高度 int perPartHeight = imgHeight / 2; // 裁剪生成上半部分图片 Bitmap topPart = Bitmap.createBitmap(originalImg, 0, 0, imgWidth, perPartHeight); // 裁剪生成下半部分图片 Bitmap bottomPart = Bitmap.createBitmap(originalImg, 0, perPartHeight, imgWidth, perPartHeight); // 将拆分后的图片设置到对应ImageView展示 ImageView ivTop = findViewById(R.id.iv_top_part); ImageView ivBottom = findViewById(R.id.iv_bottom_part); ivTop.setImageBitmap(topPart); ivBottom.setImageBitmap(bottomPart);
注意事项
- 大尺寸图片的裁剪逻辑请放在子线程执行,避免阻塞主线程触发ANR
- 当确认原始Bitmap、拆分后的Bitmap不再使用时,及时调用
recycle()方法回收内存,避免内存溢出- 如果需要沿垂直方向拆分图片为左右两部分,只需调整裁剪参数:单块宽度为原图宽度的1/2,高度与原图一致,对应修改
createBitmap方法的起始坐标、宽高入参即可
内容的提问来源于stack exchange,提问作者Roshan Rabadiya
相关产品推荐
相关产品推荐

