android 实现图片加水印
16lz
2022-07-23
File fImage = new File("/sdcard/dcim","beijing.jpeg");FileOutputStream iStream = new FileOutputStream(fImage); * 取出Bitmap oriBmporiBmp.compress(CompressFormat.JPEG, 100, iStream);int w = 320,h = 240;String mstrTitle = “感受Android带给我们的新体验”;Bitmap mbmpTest = Bitmap.createBitmap(w,h, Config.ARGB_8888);Canvas canvasTemp = new Canvas(mbmpTest);canvasTemp.drawColor(Color.WHITE);Paint p = new Paint();String familyName = “宋体”;Typeface font = Typeface.create(familyName,Typeface.BOLD);p.setColor(Color.RED);p.setTypeface(font);p.setTextSize(22);canvasTemp.drawText(mstrTitle,0,100,p);6.图片水印的生成方法 生成水印的过程。其实分为三个环节:第一,载入原始图片;第二,载入水印图片;第三,保存新的图片。 /** * create the bitmap from a byte array * * @param src the bitmap object you want proecss * @param watermark the water mark above the src * @return return a bitmap object ,if paramter's length is 0,return null */ private Bitmap createBitmap( Bitmap src, Bitmap watermark ) { String tag = "createBitmap"; Log.d( tag, "create a new bitmap" ); if( src == null ) { return null; } int w = src.getWidth(); int h = src.getHeight(); int ww = watermark.getWidth(); int wh = watermark.getHeight(); //create the new blank bitmap Bitmap newb = Bitmap.createBitmap( w, h, Config.ARGB_8888 );//创建一个新的和SRC长度宽度一样的位图 Canvas cv = new Canvas( newb ); //draw src into cv.drawBitmap( src, 0, 0, null );//在 0,0坐标开始画入src //draw watermark into cv.drawBitmap( watermark, w - ww + 5, h - wh + 5, null );//在src的右下角画入水印 //save all clip cv.save( Canvas.ALL_SAVE_FLAG );//保存 //store cv.restore();//存储 return newb; }转自:http://blog.csdn.net/hachirou/archive/2010/04/11/5473312.aspx
原文地址,http://www.devdiv.com/home.php?mod=space&uid=19970&do=blog&id=3868
//根据我自己的需要改进了一下
//获取图片缩小的图片 public static Bitmap scaleBitmap(String src,int max) { //获取图片的高和宽 BitmapFactory.Options options = new BitmapFactory.Options(); //这一个设置使 BitmapFactory.decodeFile获得的图片是空的,但是会将图片信息写到options中 options.inJustDecodeBounds = true; BitmapFactory.decodeFile(src, options); // 计算比例 为了提高精度,本来是要640 这里缩为64 max=max/10; int be = options.outWidth / max; if(be%10 !=0) be+=10; be=be/10; if (be <= 0) be = 1; options.inSampleSize = be; //设置可以获取数据 options.inJustDecodeBounds = false; //获取图片 return BitmapFactory.decodeFile(src, options); } // 加水印 也可以加文字 public static Bitmap watermarkBitmap(Bitmap src, Bitmap watermark, String title) { if (src == null) { return null; } int w = src.getWidth(); int h = src.getHeight(); //需要处理图片太大造成的内存超过的问题,这里我的图片很小所以不写相应代码了 Bitmap newb= Bitmap.createBitmap(w, h, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图 Canvas cv = new Canvas(newb); cv.drawBitmap(src, 0, 0, null);// 在 0,0坐标开始画入src Paint paint=new Paint(); //加入图片 if (watermark != null) { int ww = watermark.getWidth(); int wh = watermark.getHeight(); paint.setAlpha(50); cv.drawBitmap(watermark, w - ww + 5, h - wh + 5, paint);// 在src的右下角画入水印 } //加入文字 if(title!=null) { String familyName ="宋体"; Typeface font = Typeface.create(familyName,Typeface.BOLD); TextPaint textPaint=new TextPaint(); textPaint.setColor(Color.RED); textPaint.setTypeface(font); textPaint.setTextSize(22); //这里是自动换行的 StaticLayout layout = new StaticLayout(title,textPaint,w,Alignment.ALIGN_NORMAL,1.0F,0.0F,true); layout.draw(cv); //文字就加左上角算了 //cv.drawText(title,0,40,paint); } cv.save(Canvas.ALL_SAVE_FLAG);// 保存 cv.restore();// 存储 return newb; }
更多相关文章
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
- Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
- Android(安卓)matrix 控制图片的旋转、缩放、移动
- android 获取唯一标识
- android拍照与读取相册
- Android(安卓)报错:Caused by: android.os.FileUriExposedExcepti
- Android(安卓)热点开关状态的判断和获取热点ssid
- Android软键盘适配问题
- AIR Native Extension的使用(Android)一 : 打包ane