zoukankan      html  css  js  c++  java
  • 海报工厂之(一)android 如何给图片添加水印和文字

    Android中如何给图片添加水印,下面截取了部分核心代码,仅供参考:

    /**
         * 获取图片缩小的图片
         * @param src
         * @return
         */
        public static Bitmap scaleBitmap(String src)
        {
            //获取图片的高和宽
            BitmapFactory.Options options = new BitmapFactory.Options();
            //这一个设置使 BitmapFactory.decodeFile获得的图片是空的,但是会将图片信息写到options中
            options.inJustDecodeBounds = true;        
            BitmapFactory.decodeFile(src, options); 
            options.inSampleSize = 1;
            //设置可以获取数据
            options.inJustDecodeBounds = false;
            //获取图片
            return BitmapFactory.decodeFile(src, options);        
        }
        /**
         * 加水印 也可以加文字
         * @param src
         * @param watermark
         * @param title
         * @return
         */
        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的右下角画入水印         
                cv.drawBitmap(watermark, 0, 0, paint);// 在src的左上角画入水印      
            }else{
            Log.i("i", "water mark failed");
            }
            //加入文字
            if(title!=null)
            {
                String familyName ="宋体";
                Typeface font = Typeface.create(familyName,Typeface.NORMAL);            
                TextPaint textPaint=new TextPaint();
                textPaint.setColor(Color.RED);
                textPaint.setTypeface(font);
                textPaint.setTextSize(40);
                //这里是自动换行的
    //            StaticLayout layout = new StaticLayout(title,textPaint,w,Alignment.ALIGN_OPPOSITE,1.0F,0.0F,true);
    //            layout.draw(cv);
                //文字就加左上角算了
                cv.drawText(title,w-400,h-40,textPaint); 
            }
            cv.save(Canvas.ALL_SAVE_FLAG);// 保存
            cv.restore();// 存储
            return newb;
        }

  • 相关阅读:
    mysql自动增长的有关问题,怎么恢复从1开始
    java攻城狮之路--复习JDBC
    读书笔记:《写给大家看的面向对象设计》,《程序员的职业素养》,《设计模式其实很简单》
    《浪潮之巅,第二版》,《黑客与画家》,《暗时间》读后感
    查看SharePoint文档库是,显示层次目录,可以点击返回层次
    浪潮之巅 -- 读后感与杂谈
    InfoPath分别定义New/Edit 表单
    SharePoint js操作原生的New/Edit表单
    nodejs中req.body为空的问题
    请求uniRequest,会请求两次
  • 原文地址:https://www.cnblogs.com/ProtectedDream/p/6410295.html
Copyright © 2011-2022 走看看