海报工厂之android 如何给图片添加水印和文字

寸阳分阴须爱惜,休负春色与时光。这篇文章主要讲述海报工厂之android 如何给图片添加水印和文字相关的知识,希望能为你提供帮助。
【海报工厂之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 =https://www.songbingjia.com/android/= 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;
    }


































































    推荐阅读