在水平android中将多个图像合并为一个 [英] merge multiple images into one in horizontally android

查看:84
本文介绍了在水平android中将多个图像合并为一个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

am使用camera2 api捕获多个图像,然后保存图像并创建全景图像

am using camera2 api to capture multiple images as one and after that i save the image and creating a panorama images

private Bitmap combineImageIntoOne(ArrayList<Bitmap> bitmap) {
        int w = 0, h = 0;
        for (int i = 0; i < bitmap.size(); i++) {
            if(i < bitmap.size() - 1){
                h = bitmap.get(i).getHeight() > bitmap.get(i + 1).getHeight() ? bitmap.get(i).getHeight() : bitmap.get(i + 1).getHeight();
            }
            w += bitmap.get(i).getWidth();
        }

        Bitmap temp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(temp);
        float aspectRatio = 0;
        int side = 0;
        int width = 0;
        for (int i = 0; i < bitmap.size(); i++) {
            Log.d("HTML", "Combine: "+i+"/"+bitmap.size()+1);
            side = (i == 0 ? 0 : side+bitmap.get(i).getWidth());
            canvas.drawBitmap(bitmap.get(i), 0f, side, null);
        }
        return temp;
    }

将其缩小变得越来越困难,没有人知道如何处理20个项目的水平图像合并吗?您使用什么代码解决了此问题?

scaling it down become more difficult does any one have an idea how I can dealt with horizontal image merge with 20 items?What code did you use to resolve this problem?

推荐答案

  private Bitmap mergeMultiple(ArrayList<Bitmap> parts) {

        int w = 0, h = 0;
        for (int i = 0; i < parts.size(); i++) {
            if (i < parts.size() - 1) {
                w = parts.get(i).getWidth() > parts.get(i + 1).getWidth() ? parts.get(i).getWidth() : parts.get(i + 1).getWidth();
            }
            h += parts.get(i).getHeight();
        }

        Bitmap temp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(temp);
        Paint paint = new Paint();
        paint.setColor(Color.WHITE);
        int top = 0;
        for (int i = 0; i < parts.size(); i++) {

            top = (i == 0 ? 0 : top + parts.get(i).getHeight() + 100);
            canvas.drawBitmap(parts.get(i), 0f, top,paint );
        }
        return temp;

    }

这篇关于在水平android中将多个图像合并为一个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆