天天看点

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) {  

                }  

            }  

        }  

    }  

上一篇: android opengl

继续阅读