• 海报工厂之(一)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;
        }

  • 相关阅读:
    java中需要注意的小细节
    利用mysql查询总数据条数,再php处理数据转出数组,生成随机返回到页面,可以做成刷新页面,出现不同的内容
    js刷新页面方法大全
    CSS3自定义滚动条样式 -webkit-scrollbar(转)
    使用jquery.qrcode生成二维码(转)
    JS鼠标事件大全 推荐收藏
    微信小程序
    js几种生成随机颜色方法
    Canvas——使用定时器模拟动态加载动画!
    H5——表单验证新特性,注册模态框!
  • 原文地址:https://www.cnblogs.com/ProtectedDream/p/6410295.html
Copyright © 2020-2023  润新知