本文主要是介绍基于opencv的相机之鬼怪贴图功能实现(十一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简介
本篇是对实现图片处理功能:【鬼怪贴图】实现的记录。
实现原理
本功能实现比较简单,主要就是使用Android的Canvas模块。根据最底下鬼怪贴图菜单,来选择对应贴图,接着touch函数根据移动操作,利用Canvas 来更新鬼怪贴图在原图像中的位置。
具体代码
public class ButtonListener implements OnClickListener, OnTouchListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubghostVariable.curGhostBtnNumber = arg0.getId() + ghostVariable.ghostOffsetNumber;ghostVariable.ghostNowPic = ((BitmapDrawable) getResources().getDrawable(ghostVariable.ghostPicture[ghostVariable.curGhostBtnNumber])).getBitmap();ghostVariable.ghostFunction.saveMyBitmap(ghostVariable.tmpMatName, ghostVariable.ghostBitmapBackground);}
}@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubif(event.getAction() == MotionEvent.ACTION_MOVE ){ghostVariable.ghostBitmapBackground = ghostVariable.ghostFunction.getLoacalBitmap(ghostVariable.tmpMatName).copy(Bitmap.Config.ARGB_8888, true);ghostVariable.myGhostcanvas.setBitmap(ghostVariable.ghostBitmapBackground);ghostVariable.myGhostcanvas.drawBitmap(ghostVariable.ghostNowPic,event.getX() - ghostVariable.ghostWidthStart) * ghostVariable.ghostPicWidthScale - (ghostVariable.ghostNowPic.getWidth() / 2), event.getY() * ghostVariable.ghostPicHeightScale -(ghostVariable.ghostNowPic.getHeight() / 2), null);ghostVariable.mypicGhostImageView_1.setImageBitmap(ghostVariable.ghostBitmapBackground);}return true;}
public class ButtonListener implements OnClickListener, OnTouchListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubghostVariable.curGhostBtnNumber = arg0.getId() + ghostVariable.ghostOffsetNumber;ghostVariable.ghostNowPic = ((BitmapDrawable) getResources().getDrawable(ghostVariable.ghostPicture[ghostVariable.curGhostBtnNumber])).getBitmap();ghostVariable.ghostFunction.saveMyBitmap(ghostVariable.tmpMatName, ghostVariable.ghostBitmapBackground);}
}@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubif(event.getAction() == MotionEvent.ACTION_MOVE ){ghostVariable.ghostBitmapBackground = ghostVariable.ghostFunction.getLoacalBitmap(ghostVariable.tmpMatName).copy(Bitmap.Config.ARGB_8888, true);ghostVariable.myGhostcanvas.setBitmap(ghostVariable.ghostBitmapBackground);ghostVariable.myGhostcanvas.drawBitmap(ghostVariable.ghostNowPic,event.getX() - ghostVariable.ghostWidthStart) * ghostVariable.ghostPicWidthScale - (ghostVariable.ghostNowPic.getWidth() / 2), event.getY() * ghostVariable.ghostPicHeightScale -(ghostVariable.ghostNowPic.getHeight() / 2), null);ghostVariable.mypicGhostImageView_1.setImageBitmap(ghostVariable.ghostBitmapBackground);}return true;}
在鬼怪贴图菜单栏中,点击对应选项之后,onClick将根据ghostVariable.curGhostBtnNumber,来更新当前贴图操作会被使用的鬼怪图片到ghostVariable.ghostNowPic中。用户在图片上滑动的时候,将触发onTouch函数,该函数根据滑动坐标位置,利用myGhostcanvas来实现贴图操作,并通过更新mypicGhostImageView_1,将结果实时显示出来。
效果演示
对应的效果图片如下:
贴图效果
具体演示下载:http://download.csdn.net/detail/u011630458/9261617
这篇关于基于opencv的相机之鬼怪贴图功能实现(十一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!