zoukankan      html  css  js  c++  java
  • Android中bitmap的相关处理

    加载大图片
    	Options options=new Options();
    	options.inJustDecodeBounds=true;//不加载图片,只加载文件信息
    	//加载图片,获取到配置信息
    	BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/a.jpg",options);
    	int width=options.outWidth;//获取到图片的真是宽度
    	int height=options.outHeight;//获取到图片的真是的高度
    	//获取到手机屏幕显示对象
    	Display display = getWindowManager().getDefaultDisplay();
    	int h = display.getHeight();//获取屏幕的高度
    	int w = display.getWidth();//获取到平局的宽度
    	//计算缩放的比率
    	int scale=1;
    	int scaley=width/w;
    	int scalex=height/h;
    	if(scalex<1 && scaley<1){
    		
    	}else{
    		//如果缩放的宽,大于高,则安照宽的缩放比率,因为高的缩放比率小,那么按照高的缩放比率的话,宽则超出了屏幕的宽
    		scale=scalex>scaley?scalex:scaley;
    	}
    	
    	options.inJustDecodeBounds=true;
    	options.inSampleSize=scale;//指定缩放比率
    	//根据配置信息,重新生成有一个bitmap对象,这就得到的是缩放之后的图片
    	Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/a.jpg",options);
    	img.setImageBitmap(bitmap);
    
    涂鸦
            1、首先加载一个图片Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/a.jpg");
    	2.创建一个空的图片,bit = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(),bitmap.getConfig());
    	3.创建一个画布,Canvas canvas=new Canvas(bit);
    	4.创建一个画笔 panint paint=new Paint(); paint.setcolor(Color.red);
    	5.把加载的图片画到画布上 canvas.drawBitmap(bitmap)
    	6.在图片上设置触摸事件,根据按下和移动的位置开始画线
    
    加水印
    	和上面的一样,只是加了一句canvas.drawText("饿哦我到底发生", 100,100, paint);
    
    
    保存图片通知相册扫描该图片 bit.compress(CompressFormat.JPEG, 100, new FileOutputStream(Environment.getExternalStorageDirectory()+"/hdksh.jpg")); Intent intent=new Intent(); intent.setAction("android.intent.action.MEDIA_MOUNTED"); intent.setData(Uri.fromFile(new File(Environment.getExternalStorageDirectory()+"hdksh.jpg"))); sendBroadcast(intent);//发送广播,通知相册扫描
    图片的旋转 Bitmap bitmap=BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/mm.jpg"); Bitmap bit = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); Canvas canvas=new Canvas(bit); Matrix matrix=new Matrix(); matrix.setRotate(180, bitmap.getWidth()/2, bitmap.getHeight()/2); Paint paint=new Paint(); paint.setColor(Color.RED); canvas.drawBitmap(bitmap, matrix, paint); img.setImageBitmap(bit)
    镜面效果 Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/mm.jpg"); Bitmap bit = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); Canvas canvas=new Canvas(bit); Paint paint=new Paint(); Matrix matrix=new Matrix(); matrix.setScale(-1, 1);//反转 matrix.postTranslate(bitmap.getWidth(), 0);//移动 canvas.drawBitmap(bitmap, matrix, paint); img.setImageBitmap(bit);
  • 相关阅读:
    基于最大最小距离的分类数目上限K确定的聚类方法
    diff函数(matlab)
    CreateThread线程函数
    套接字基础
    基于TCP套接字实现的简单Demo
    使用httpwatch抓包
    TLV----Demo讲解
    关于位图边缘的检测定位
    从txt中读入数据到数组中(fscanf)
    C语言运算符的优先级
  • 原文地址:https://www.cnblogs.com/tianshidechibang234/p/3886952.html
Copyright © 2011-2022 走看看