拼图代码-两张图片拼接

拼图代码——两张图片拼接:

onCreate函数:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageview=(ImageView) findViewById(R.id.imageview);
        Bitmap background=BitmapFactory.decodeResource(getResources(), R.drawable.back);
        Bitmap foreground=BitmapFactory.decodeResource(getResources(), R.drawable.plane);

        /*Canvas canvas=new Canvas(background);
        drawImage(canvas, background, 0, foreground.getHeight(),
        		foreground.getWidth(), background.getHeight()/2, 0, 0);*/

        Bitmap bitmap=toConformBitmap(background, foreground);
        imageview.setImageBitmap(bitmap);
    }

拼接函数:

方法一:

<span style="font-size:18px;">    private Bitmap toConformBitmap(Bitmap background, Bitmap foreground){
	if(background==null){
		return null;
	}
	int bgWidth=background.getWidth();
	int bgHeight=background.getHeight();
	int fgWidth=foreground.getWidth();
	int fgHeight=foreground.getHeight();
	//创建一个新的和SRC长度宽度一样的位图
	Bitmap newbmp=Bitmap.createBitmap(bgWidth+fgWidth, bgHeight+fgHeight, Config.ARGB_8888);
    	Canvas cv=new Canvas(newbmp);
    	cv.drawBitmap(background, 0, 0, null);//在0,0坐标开始画bg
    	cv.drawBitmap(foreground, 0, bgHeight, null);//在0,0坐标开始画fg,可以从任意位置画入

    	cv.save(Canvas.ALL_SAVE_FLAG);//保存
    	cv.restore();//存储

    	return newbmp;
    }</span>

方法二:

<span style="font-size:18px;">    private Bitmap toConformBitmap(Bitmap background, Bitmap foreground){
	if(background==null){
	<span style="white-space:pre">	</span>return null;
	}
	int bgWidth=background.getWidth();
	int bgHeight=background.getHeight();
	int fgWidth=foreground.getWidth();
	int fgHeight=foreground.getHeight();
	//创建一个新的和SRC长度宽度一样的位图
	Bitmap newbmp=Bitmap.createBitmap(bgWidth+fgWidth, bgHeight+fgHeight, Config.ARGB_8888);
    	Canvas cv=new Canvas(newbmp);

    	//方法二
    	Rect dst=new Rect();
    	dst.left=0;
    	dst.top=0;
    	dst.right=bgWidth;
    	dst.bottom=bgHeight-50;
    	cv.drawBitmap(background, null, dst, null);

    	Rect dst2=new Rect();
    	dst2.left=0;
    	dst2.top=bgHeight;
    	double Xscale=bgWidth/fgWidth;//X轴缩放比例
    	dst2.bottom=(int) (bgHeight+fgHeight*Xscale);
    	dst2.right=bgWidth;
    	cv.drawBitmap(foreground, null, dst2, null);

    	dst2=null;
    	dst=null;

    	cv.save(Canvas.ALL_SAVE_FLAG);//保存
    	cv.restore();//存储

    	return newbmp;
    }</span>

保存函数:

    //保存bitmap为一张图片
    private String saveBitmap(Bitmap bitmap){
    	String imagePath=getApplication().getFilesDir().getAbsolutePath()+"/temp.jpg";
    	File file=new File(imagePath);
    	if(file.exists()){
    		file.delete();
    	}
    	try {
			FileOutputStream out=new FileOutputStream(file);
			if(bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)){
				out.flush();
				out.close();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			Toast.makeText(this, "保存失败", 1).show();

			e.printStackTrace();
		}

		return imagePath;

    }
时间: 2024-10-22 14:28:45

拼图代码-两张图片拼接的相关文章

NGUI两张图片拼接的时候,有缝隙的解决方法

NGUI两张图片拼接的时候,有时候会有缝隙(使用图集的时候),如图: 解决方法: 选中原图片(非图集中的图片,是没有做成图集之前的图片),参数设置成下图所示(最重要的是Filter Mode的模式): 新建UITexture,将图片拖拽上去,如图: 问题解决.

JAVA 比较两张图片的相似度的代码

原文:http://www.open-open.com/code/view/1448334323079 import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; /** * 比较两张图片的相似度 * @author Guihua * */ public class BMPLoader { // 改变成二进制码 public static String[][] getPX(Stri

两张图片叠加成一张图&&按XY轴比例缩放图片

两张图片叠加成一张图 这个代码也是之前在网上搜到的,只是实在找不到原始出处了.当然还有别的方法实现叠图的效果,这个经测试验证可用,仅此而已. [java] view plaincopy Bitmap bitmap1 = ((BitmapDrawable) getResources().getDrawable( R.drawable.ic_default_slide)).getBitmap(); Bitmap bitmap2 = ((BitmapDrawable) getResources().g

OpenCV入门:(四:混合两张图片)

1. 原理 对两张图片使用如下公式可以得到两张图片的混合图片, 其中f0(x),f1(x)分别是图片1和图片2同一位置的像素点. 2. OpenCV中的AddWeight函数 函数和参数说明: void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1) src1 – first input array. alph

OpenCV两张图片的合并

转载请注明出处!!!http://blog.csdn.net/zhonghuan1992 OpenCV两张图片的合并 原理: 两张图片合并,想想图片是用一个个像素点来存储,每个像素点有他的值.那么合并,无非就是像素点值得合并,使用的公式可以就是给两张图片分别一个权值,然后求和.向下面这个公式: 的值位于0至1之间 OpenCV实现: 那么我们在openCV内怎么实现呢?在openCV中,有一个addWeighted函数,函数具体调用可以看这里. 读取完两个要合并的图片后,(注意,这里合并的图片必

图像处理:AlphaBlend混合两张图片

使用vs2017新建一个项目 混合A,B两张图的基础算法: outColor = srcColor * srcAlpha + destColor * (1 - srcAlpha) 输出颜色 = 源颜色 * 源混合因子 + 目标颜色 * ( 1 - 源混合因子 ) 这里scrAlpha从源图的Alpha通道获取 代码如下: // alphablendimg.cpp: 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2/op

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 选择调用的进程为 24 i386 getuid sys_getuid1647 i386 getgid sys_getgid16 使用库函数API方式 使用C代码中嵌入汇编代码方式

实验--使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用(杨光)

使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用 攥写人:杨光  学号:20135233 ( *原创作品转载请注明出处*) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验要求: 选择一个系统调用(13号系统调用time除外),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/sys

代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)

代码: 两列图片瀑布流(一次后台取数据,无ajax,图片懒加载.下拉后分批显示图片.图片高度未知,当图片onload后才显示容器) [思路]: 图片瀑布流,网上代码有多种实现方式,也有各类插件.没找到合意的,所以根据网上找的一段代码,进行了较大改动. 需引用 zepto 或 jquery. 我这个是应用于手机上的,两列瀑布流,图片高度未知——等图片的onloaded事件触发后,才对容器进行计算和定位. 大容器是 $("#imgList"),容器格子是$(".pin"