zoukankan      html  css  js  c++  java
  • Android开发之大位图压缩水印处理

          我们在发微博或者csdn博文的时候都能够给图片加上一个水印。一个独立的标识,那是怎么实现的呢?先封装一个BitmapTools封装类。该类要解决的问题是一将突破存储至sdcard中,二给图片加上水印。

    BitmapTools

    package com.example.g11_bitmap04;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStream;
    
    import android.content.res.Resources;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Paint;
    import android.os.Environment;
    
    public class BitmapTools {
    	
    	public BitmapTools() {
    		// TODO Auto-generated constructor stub
    	}
    	public static Bitmap createBitmap(Resources resources, int resid,
    			String name) {
    		Bitmap bitmap=BitmapFactory.decodeResource(resources, resid);
    		//复制一份新的Bitmap,由于不能直接在原有的bitmap上进行水印操作
    		//Bitmap.config存储的格式
    		Bitmap newBitmap=bitmap.copy(Bitmap.Config.ARGB_8888, true);
    		//使用自己定义画布
    		Canvas canvas=new Canvas(newBitmap);
    		Paint paint=new Paint();
    		paint.setTextSize(200);
    		canvas.drawText("hello", 100, 100, paint);
    		//推断SDcard是否在可用状态
    		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
    			//直接将图片保存在根文件夹下
    			File root=Environment.getExternalStorageDirectory();
    			OutputStream outputStream=null;
    			try {
    				
    				outputStream=new FileOutputStream(new File(root, name));
    				//对图片进行压缩并以png格式,保存在sdcard中
    				newBitmap.compress(Bitmap.CompressFormat.PNG, 50, outputStream);
    			} catch (Exception e) {
    				// TODO: handle exception
    			}
    		}
    		return newBitmap;
    
    	}
    }

    MainActivtiy中调用该方法

    package com.example.g11_bitmap04;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.view.Menu;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
         private ImageView imageView;
         private Button button;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		imageView=(ImageView)this.findViewById(R.id.imageView1);
    		button=(Button)this.findViewById(R.id.button1);
    		button.setOnClickListener(new View.OnClickListener() {
    			
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				
    				Bitmap bitmap=BitmapTools.createBitmap(getResources(), R.drawable.a, "a.png");
    				imageView.setImageBitmap(bitmap);
    			}
    		});
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    }


        

  • 相关阅读:
    idea Ctrl+Alt+向下箭头 复制不起作用问题解决
    @Data 注解使用
    idea class类增加注释
    mysql 固定用户赋值数据库权限
    springboot logback 详细配置
    gitblit 增加ssh key
    uniapp内嵌H5页面和uniapp页面相互传值
    博客搬家
    反编译,java字节流 ,wirshark抓包,php转换中文
    charles 双向抓包
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7016865.html
Copyright © 2011-2022 走看看