博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android图片加水印,文字
阅读量:6590 次
发布时间:2019-06-24

本文共 3028 字,大约阅读时间需要 10 分钟。

两种方法:1.直接在图片上写文字         String str = "PICC要写的文字";       ImageView image = (ImageView) this.findViewById(R.id.ImageView);       Bitmap photo = BitmapFactory.decodeResource(this.getResources(), R.drawable.text);       int width = photo.getWidth(), hight = photo.getHeight();       System.out.println("宽"+width+"高"+hight);       icon = Bitmap.createBitmap(width, hight, Bitmap.Config.ARGB_8888); //建立一个空的BItMap         Canvas canvas = new Canvas(icon);//初始化画布绘制的图像到icon上                 Paint photoPaint = new Paint(); //建立画笔         photoPaint.setDither(true); //获取跟清晰的图像采样         photoPaint.setFilterBitmap(true);//过滤一些                 Rect src = new Rect(0, 0, photo.getWidth(), photo.getHeight());//创建一个指定的新矩形的坐标         Rect dst = new Rect(0, 0, width, hight);//创建一个指定的新矩形的坐标         canvas.drawBitmap(photo, src, dst, photoPaint);//将photo 缩放或则扩大到 dst使用的填充区photoPaint                 Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG);//设置画笔         textPaint.setTextSize(20.0f);//字体大小         textPaint.setTypeface(Typeface.DEFAULT_BOLD);//采用默认的宽度         textPaint.setColor(Color.RED);//采用的颜色         //textPaint.setShadowLayer(3f, 1, 1,this.getResources().getColor(android.R.color.background_dark));//影音的设置         canvas.drawText(str, 20, 26, textPaint);//绘制上去字,开始未知x,y采用那只笔绘制        canvas.save(Canvas.ALL_SAVE_FLAG);        canvas.restore();        image.setImageBitmap(icon);       saveMyBitmap(icon); 2.将两个图片合成      onCreat方法里面{         Bitmap mark = BitmapFactory.decodeResource(this.getResources(), R.drawable.icon);             Bitmap photo = BitmapFactory.decodeResource(this.getResources(), R.drawable.text);        Bitmap a = createBitmap(photo,mark);            image.setImageBitmap(a);            saveMyBitmap(a);       }           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;    } //保存图片到data下面        public void saveMyBitmap(Bitmap bmp){     FileOutputStream fos = null;        try {            fos = openFileOutput("image1.jpg", Context.MODE_PRIVATE);            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);        } catch (FileNotFoundException e) {        } finally {            if (fos != null) {                try {                    fos.flush();                    fos.close();                } catch (IOException e) {                }            }        }    }

 

转载地址:http://cozio.baihongyu.com/

你可能感兴趣的文章
git-push(1) Manual Page
查看>>
【蓝桥杯】 PREV-1 核桃数
查看>>
东北四省杯经验
查看>>
GIS开发离线地图应用-初识gis
查看>>
java日期工具类DateUtil
查看>>
SharePoint 2013 error The given assembly name or codebase System.ServiceModel.dll was invalid
查看>>
第四章:Django 的模板系统(转)
查看>>
What is corresponding Cron expression to fire in every X seconds, where X > 60? --转载
查看>>
线性同余方程模板( A+C*x=B(mod D) )
查看>>
OpenCV Open Camera 打开摄像头
查看>>
2015第49周三
查看>>
CentOS6.5下安装MySQL
查看>>
7.5 数据注解特性--MaxLength&&MinLength
查看>>
企业日志分析 五大问题需重点注意
查看>>
《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高...
查看>>
MyBatis学习总结(五)——实现关联表查询
查看>>
SQLite介绍、学习笔记、性能测试
查看>>
【.NET深呼吸】基础:自定义类型转换
查看>>
java继承2——类与继承(转)
查看>>
【转载】Eclipse 的快捷键以及文档注释、多行注释的快捷键
查看>>