zoukankan      html  css  js  c++  java
  • android图片加水印,文字

    两种方法:
    
    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) {
                    }
                }
            }
    
        }
  • 相关阅读:
    java学习笔记
    androd Sdk manager配置
    50ms延时程序
    89c51中断入口地址表
    打印杨辉三角--队列的应用
    栈的应用--括号匹配
    哈夫曼编码---数据压缩
    PS转手绘
    数据结构学习思路
    第三届蓝桥杯省赛---第39级台阶
  • 原文地址:https://www.cnblogs.com/qq378829867/p/3689306.html
Copyright © 2011-2022 走看看