【bitmap】Android图片处理方法

图片处理与缩放技术
本文介绍了通过URL获取图片并转换为位图的方法,提供了位图按比例缩放的实现方式,并展示了如何从本地资源中加载图片。此外,还包含了图片切割的功能介绍。
通过传入图片url获取位图方法

public Bitmap returnBitMap(String url) {

    URL myFileUrl = null;

    Bitmap bitmap = null;

     

    try {

         myFileUrl = new URL(url);

    }

    catch (MalformedURLException e) {

         e.printStackTrace();

    }

     

    try {

         HttpURLConnection conn = (HttpURLConnection) myFileUrl

         .openConnection();

         conn.setDoInput(true);

         conn.connect();

         InputStream is = conn.getInputStream();

         bitmap = BitmapFactory.decodeStream(is);

         is.close();

    }

    catch (IOException e) {

         e.printStackTrace();

    }

     

    Log.v(tag, bitmap.toString());

     

    return bitmap;

}


------------------------------------------------------------
通过传入位图,新的宽、高比进行位图的缩放操作

public static Drawable resizeImage(Bitmap bitmap, int w, int h) {


    Bitmap BitmapOrg = bitmap;

    int width = BitmapOrg.getWidth();

    int height = BitmapOrg.getHeight();

    int newWidth = w;
    int newHeight = h;
    Log.v(tag, String.valueOf(width));

    Log.v(tag, String.valueOf(height));

    Log.v(tag, String.valueOf(newWidth));

    Log.v(tag, String.valueOf(newHeight));

    // calculate the scale

    float scaleWidth = ((float) newWidth) / width;

    float scaleHeight = ((float) newHeight) / height;

    // create a matrix for the manipulation

    Matrix matrix = new Matrix();

    // resize the Bitmap


    matrix.postScale(scaleWidth, scaleHeight);


    // if you want to rotate the Bitmap


    // matrix.postRotate(45);


 


    // recreate the new Bitmap


    Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0, width,


    height, matrix, true);


 


    // make a Drawable from Bitmap to allow to set the Bitmap


    // to the ImageView, ImageButton or what ever


    return new BitmapDrawable(resizedBitmap);


}



-------------------------------------------------------
加载本地图片


/*


 *@param context:主运行函数实例


 *@param bitAdress:图片地址,一般指向R下的drawable目录


 *@return


 */


public final Bitmap CreatImage(Context context, int bitAdress) {


    Bitmap bitmaptemp = null;


    bitmaptemp = BitmapFactory.decodeResource(context.getResources(),bitAdress);


    return bitmaptemp;


}


------------------------------------------------------
图片平均分割方法,将大图平均分割为N行N列,方便用户使用
/*


 * @param g :画布  paint:画笔   imgBit:图片   x 


 *  x:X轴起点坐标  y:Y轴起点坐标  w:单一图片的宽度  h:单一图片的高度 line:第几列  row:第几行


 */


public final void cutImage(Canvas g, Paint paint, Bitmap imgBit, int x, int y, int w, int h, int line, int row) {


    g.clipRect(x, y, x + w, h + y);


    g.drawBitmap(imgBit, x – line * w, y – row * h, paint);


    g.restore();


}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值