new Thread(new Runnable() {
@Override
public void run() {
Long a = System.currentTimeMillis();
File file1 = new File(div, "1694834497111"+".jpg");
File file2 = new File(div, "1694834502113"+".jpg");
File file3 = new File(div, "1694835780761"+".jpg");
Bitmap bitmap1 = openImage(file1.getAbsolutePath());
Bitmap bitmap2 = openImage(file2.getAbsolutePath());
Bitmap bitmap3 = openImage(file3.getAbsolutePath());
List<Bitmap> allbitmap = new ArrayList<Bitmap>();;
allbitmap.add(bitmap1);
allbitmap.add(bitmap2);
allbitmap.add(bitmap3);
Bitmap big = mergeImages(allbitmap);
String path = div.getAbsolutePath()+"/ABC.jpg";
Log.e("log","path"+path);
saveImage(path,big);
Log.e("log","time:::" + (System.currentTimeMillis()-a));
}
}).start();
public static void saveImage(String path, Bitmap bitmap){
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
bitmap.compress(Bitmap.CompressFormat.JPEG,100,bos);
bos.flush();
bos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static Bitmap openImage(String path){
Bitmap bitmap = null;
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path));
bitmap = BitmapFactory.decodeStream(bis);
bis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}
public Bitmap mergeImages(List<Bitmap> images) {
int maxWidth = 0;
int totalHeight = 0;
// 计算合并后图像的宽度和高度
for (Bitmap image : images) {
maxWidth = Math.max(maxWidth, image.getWidth());
totalHeight += image.getHeight();
}
Log.e("log","maxWidth"+maxWidth + "totalHeight"+totalHeight);
// 创建一个空白的Bitmap,用于绘制合并后的图像
Bitmap result = Bitmap.createBitmap(maxWidth, totalHeight, Bitmap.Config.ARGB_8888);
// 创建一个Canvas对象,并将其绑定到result Bitmap上
Canvas canvas = new Canvas(result);
int currentHeight = 0;
// 将每个图像绘制到Canvas上
for (Bitmap image : images) {
canvas.drawBitmap(image, 0, currentHeight, null);
currentHeight += image.getHeight();
}
return result;
}