android 照片拼接长图_Android将若干图片拼接成长图

该博客介绍了如何使用Java实现图片拼接功能。首先检查图片集是否为多宽度,然后计算图纸的总宽度和高度。接着,创建新的Bitmap,并在Canvas上逐个绘制经过调整大小的图片,最后返回拼接后的Bitmap。涉及到的关键技术包括Bitmap操作、Canvas绘图和图像尺寸调整。
摘要由CSDN通过智能技术生成

/**

* 拼接图片

*

* @param bitmaps 原图片集

* @return 拼接后的新图

*/

public static Bitmap combineImage(Bitmap... bitmaps) {

boolean isMultiWidth = false;//是否为多宽度图片集

int width = 0;

int height = 0;

//获取图纸宽度

for (Bitmap bitmap : bitmaps) {

if (width != bitmap.getWidth()) {

if (width != 0) {//过滤掉第一次不同

isMultiWidth = true;

}

width = width < bitmap.getWidth() ? bitmap.getWidth() : width;

}

}

//获取图纸高度

for (Bitmap bitmap : bitmaps) {

if (isMultiWidth) {

height = height + bitmap.getHeight() * width / bitmap.getWidth();

} else {

height = height + bitmap.getHeight();

}

}

//创建图纸

Bitmap newBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

//创建画布,并绑定图纸

Canvas canvas = new Canvas(newBitmap);

int tempHeight = 0;

//画图

for (int i = 0; i < bitmaps.length; i++) {

if (isMultiWidth) {

if (width != bitmaps[i].getWidth()) {

int newSizeH = bitmaps[i].getHeight() * width / bitmaps[i].getWidth();

Bitmap newSizeBmp = resizeBitmap(bitmaps[i], width, newSizeH);

canvas.drawBitmap(newSizeBmp, 0, tempHeight, null);

tempHeight = tempHeight + newSizeH;

newSizeBmp.recycle();

} else {

canvas.drawBitmap(bitmaps[i], 0, tempHeight, null);

tempHeight = tempHeight + bitmaps[i].getHeight();

}

} else {

canvas.drawBitmap(bitmaps[i], 0, tempHeight, null);

tempHeight = tempHeight + bitmaps[i].getHeight();

}

bitmaps[i].recycle();

}

return newBitmap;

}

public static Bitmap resizeBitmap(Bitmap bitmap, int newWidth, int newHeight) {

float scaleWidth = ((float) newWidth) / bitmap.getWidth();

float scaleHeight = ((float) newHeight) / bitmap.getHeight();

Matrix matrix = new Matrix();

matrix.postScale(scaleWidth, scaleHeight);

Bitmap bmpScale = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);

return bmpScale;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值