android 中关于两张图片叠加方法(记录)

最近在做一个小的Android项目中遇到一个问题,就是不知道为什么机器输出的分辨率不稳定,总是有几十个像素的误差。导致屏幕适配出现了问题。这次主要记录一下解决思路。
 

android 中关于两张图片叠加方法(记录)_第1张图片

问题就如图 主要是一张背景图 ,在背景图指定区域去镶嵌一张指定图片。

对于这种简单的解决思路就是 将两张图片合成为一张 。因为背景图的尺寸是固有的的 所以合成后显示, 这样就不会乱了。

上代码

 /**
     * 合成图片
     * @param big  底图
     * @param small 小图
     * @param xInRatio 小图在底图中的横坐标(相对于底图宽的比例)
     * @param yInRatio 小图在底图中的纵坐标(相对于底图高的比例)
     * @return
     */
    public static Bitmap mergeWithCrop(Bitmap big, Bitmap small, float xInRatio, float yInRatio){

        int bigW = big.getWidth();
        int bigH = big.getHeight();
//scale 计算背景图被缩放的比例   1920 为本人原图实际宽度
        float scale = (float) (bigW/1920.0);
//newsmallw 计算镶嵌图的尺寸   270为镶嵌位置实际宽高(正方形)
        int newsmallw = (int) (270*scale);

        Bitmap newBmp=Bitmap.createBitmap(bigW,bigH,Bitmap.Config.RGB_565);
        Canvas cv=new Canvas(newBmp);


        //在0,0坐标开始画入bg
        cv.drawBitmap(big,0,0,null);
//        开始画入fg,可以从任意位置画入,具体位置自己计算
          int smallX = (int)(bigW*xInRatio);
          int smallY = (int)(bigH*yInRatio);
//设置镶嵌图片的位置
        Rect sRect = new Rect(smallX, smallY, smallX+newsmallw, smallY+newsmallw);
//将小图镶嵌到背景图指定位置
        cv.drawBitmap(small,null,sRect,null);

        return newBmp;
    }

 

你可能感兴趣的:(android 中关于两张图片叠加方法(记录))