广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android画图并保存图片的具体实现代码

    2018-04-09 07:41:19 次阅读 稿源:互联网
    广告
    Canvas是一个画布,你可以建立一个空白的画布,就直接new一个Canvas对象,不需要参数。
    也可以先使用BitmapFactory创建一个Bitmap对象,作为新的Canvas对象的参数,也就是说这个画布不是空白的,
    如果你想保存图片的话,最好是Bitmap是一个新的,而不是从某个文件中读入进来的,或者是Drawable对象。

    然后使用Canvas画第一张图上去,在画第二张图上去,最后使用Canvas.save(int flag)的方法进行保存,注意save方法里面的参数可以保存单个图层,
    如果是保存全部图层的 话使用 save( Canvas.ALL_SAVE_FLAG )。

    最后所有的信息都会保存在第一个创建的Bitmap中。代码如下:
    Java代码
    代码如下:

    /**
        * create the bitmap from a byte array
        *
        * @param src the bitmap object you want proecss
        * @param watermark the water mark above the src
        * @return return a bitmap object ,if paramter's length is 0,return null
        */ 
       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; 
       } 

     对图片进行缩小的方法:
    Java代码
    代码如下:

    /**
        * lessen the bitmap
        *
        * @param src bitmap
        * @param destWidth the dest bitmap width
        * @param destHeigth
        * @return new bitmap if successful ,oherwise null
        */ 
       private Bitmap lessenBitmap( Bitmap src, int destWidth, int destHeigth ) 
       { 
           String tag = "lessenBitmap"; 
           if( src == null ) 
           { 
               return null; 
           } 
           int w = src.getWidth();//源文件的大小 
           int h = src.getHeight(); 
           // calculate the scale - in this case = 0.4f 
           float scaleWidth = ( ( float ) destWidth ) / w;//宽度缩小比例 
           float scaleHeight = ( ( float ) destHeigth ) / h;//高度缩小比例 
           Log.d( tag, "bitmap width is :" + w ); 
           Log.d( tag, "bitmap height is :" + h ); 
           Log.d( tag, "new width is :" + destWidth ); 
           Log.d( tag, "new height is :" + destHeigth ); 
           Log.d( tag, "scale width is  :" + scaleWidth ); 
           Log.d( tag, "scale height is  :" + scaleHeight ); 
           Matrix m = new Matrix();//矩阵 
           m.postScale( scaleWidth, scaleHeight );//设置矩阵比例 
           Bitmap resizedBitmap = Bitmap.createBitmap( src, 0, 0, w, h, m, true );//直接按照矩阵的比例把源文件画入进行 
           return resizedBitmap; 
       }

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告