import android.R.integer;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Rect;
/**
* 位图处理相关工具
*
* @author 李晨龙
*
*/
public class BitmapUtil
{
/**
* @author 御风火狐
*
* 9宫格缩放,保持4个角不变形.进行整体缩放
*
* ******************************************************
* * 1 * 2 * 3 *
* ******************************************************
* * 4 * 5 * 6 *
* ******************************************************
* * 7 * 8 * 9 *
* ******************************************************
* scale9grid用来设置5的矩形范围,将元数据切割成9宫格
* 1,3,7,9保持原始比例不变形
* 2,8进行水平缩放,垂直不缩放
* 4,6进行垂直缩放,水平不缩放
*
* @param source
* 要进行缩放的源数据
* @param scale9grid
* 中间矩形的对角坐标,left,top,right,bottom
* @param width
* 缩放后的宽
* @param height
* 缩放后的高
* @return
* 缩放后的bitmap
*/
public static Bitmap scale9Grid(Bitmap source,Rect scale9grid,int width,int height)
{
Bitmap bmpres = Bitmap.createBitmap( width, height, Config.ARGB_8888 );
Canvas canvas = new Canvas(bmpres);
int sw = source.getWidth( );
int sh = source.getHeight( );
int leftW = scale9grid.left;
int rightW = sw-scale9grid.right;
int topH = scale9grid.top;
int bottomH = sh - scale9grid.bottom;
int scaleR = width - rightW;
int scaleB = height - bottomH;
canvas.drawBitmap( source, new Rect( 0, 0, leftW, topH ), new Rect( 0, 0, leftW, topH ), null );//左上角,不变形
canvas.drawBitmap( source, new Rect( scale9grid.right,0,sw,topH), new Rect( scaleR, 0, width, topH ), null );//右上角,不变形
canvas.drawBitmap( source, new Rect( 0,scale9grid.bottom,leftW,sh), new Rect( 0, scaleB, leftW, height ), null );//左下角,不变形
canvas.drawBitmap( source, new Rect( scale9grid.right,scale9grid.bottom,sw,sh), new Rect( scaleR, scaleB, width, height ), null );//右下角,不变形
canvas.drawBitmap( source, new Rect( leftW,0,scale9grid.right,topH), new Rect( leftW,0,scaleR,topH ), null );//上条矩形,水平缩放,垂直不缩放
canvas.drawBitmap( source, new Rect( leftW,scale9grid.bottom,scale9grid.right,sh), new Rect( leftW,scaleB,scaleR,height ), null );//下条矩形,水平缩放,垂直不缩放
canvas.drawBitmap( source, new Rect( 0,topH,leftW,scale9grid.bottom ), new Rect( 0,topH,leftW,scaleB ), null );//左条矩形,垂直缩放,水平不缩放
canvas.drawBitmap( source, new Rect( scale9grid.right,topH,sw,scale9grid.bottom ), new Rect( scaleR,topH,width,scaleB ), null );//右条矩形,垂直缩放,水平不缩放
canvas.drawBitmap( source, scale9grid, new Rect( scale9grid.left,scale9grid.top,scaleR,scaleB ), null );//中间矩形,水平垂直都缩放
return bmpres;
}
}
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Rect;
/**
* 位图处理相关工具
*
* @author 李晨龙
*
*/
public class BitmapUtil
{
/**
* @author 御风火狐
*
* 9宫格缩放,保持4个角不变形.进行整体缩放
*
* ******************************************************
* * 1 * 2 * 3 *
* ******************************************************
* * 4 * 5 * 6 *
* ******************************************************
* * 7 * 8 * 9 *
* ******************************************************
* scale9grid用来设置5的矩形范围,将元数据切割成9宫格
* 1,3,7,9保持原始比例不变形
* 2,8进行水平缩放,垂直不缩放
* 4,6进行垂直缩放,水平不缩放
*
* @param source
* 要进行缩放的源数据
* @param scale9grid
* 中间矩形的对角坐标,left,top,right,bottom
* @param width
* 缩放后的宽
* @param height
* 缩放后的高
* @return
* 缩放后的bitmap
*/
public static Bitmap scale9Grid(Bitmap source,Rect scale9grid,int width,int height)
{
Bitmap bmpres = Bitmap.createBitmap( width, height, Config.ARGB_8888 );
Canvas canvas = new Canvas(bmpres);
int sw = source.getWidth( );
int sh = source.getHeight( );
int leftW = scale9grid.left;
int rightW = sw-scale9grid.right;
int topH = scale9grid.top;
int bottomH = sh - scale9grid.bottom;
int scaleR = width - rightW;
int scaleB = height - bottomH;
canvas.drawBitmap( source, new Rect( 0, 0, leftW, topH ), new Rect( 0, 0, leftW, topH ), null );//左上角,不变形
canvas.drawBitmap( source, new Rect( scale9grid.right,0,sw,topH), new Rect( scaleR, 0, width, topH ), null );//右上角,不变形
canvas.drawBitmap( source, new Rect( 0,scale9grid.bottom,leftW,sh), new Rect( 0, scaleB, leftW, height ), null );//左下角,不变形
canvas.drawBitmap( source, new Rect( scale9grid.right,scale9grid.bottom,sw,sh), new Rect( scaleR, scaleB, width, height ), null );//右下角,不变形
canvas.drawBitmap( source, new Rect( leftW,0,scale9grid.right,topH), new Rect( leftW,0,scaleR,topH ), null );//上条矩形,水平缩放,垂直不缩放
canvas.drawBitmap( source, new Rect( leftW,scale9grid.bottom,scale9grid.right,sh), new Rect( leftW,scaleB,scaleR,height ), null );//下条矩形,水平缩放,垂直不缩放
canvas.drawBitmap( source, new Rect( 0,topH,leftW,scale9grid.bottom ), new Rect( 0,topH,leftW,scaleB ), null );//左条矩形,垂直缩放,水平不缩放
canvas.drawBitmap( source, new Rect( scale9grid.right,topH,sw,scale9grid.bottom ), new Rect( scaleR,topH,width,scaleB ), null );//右条矩形,垂直缩放,水平不缩放
canvas.drawBitmap( source, scale9grid, new Rect( scale9grid.left,scale9grid.top,scaleR,scaleB ), null );//中间矩形,水平垂直都缩放
return bmpres;
}
}