提示:
矩陣這個詞是無意間想起來的,在美顏相機裏發現可以給不同的照片 設置色彩,很好奇就百度搜了一下,發現原來是用矩陣實現的,並且分爲顏色矩陣和普通矩陣,也懶的寫了,就隨便敲了幾行代碼保存起來, 以後有時間弄懂了再來補充
矩陣:圖片出現倒置,拉伸變形,通過矩陣對圖片進行處理 pro:前乘 post:後乘
public class MainActivity extends Activity implements View.OnClickListener {
private Button mB,mB2,mB3,mB4;
private ImageView mIv,mIv2;
private Bitmap bitmap;
private Bitmap newBitmap;//處理之後的圖片
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bitmap= BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
initView();
}
private void initView() {
mB=(Button) findViewById(R.id.mB);
mB2=(Button) findViewById(R.id.mB2);
mB3=(Button) findViewById(R.id.mB3);
mB4=(Button) findViewById(R.id.mB4);
mIv=(ImageView) findViewById(R.id.mIv);
mIv2=(ImageView) findViewById(R.id.mIv2);
mIv2.setImageBitmap(bitmap);
mB.setOnClickListener(this);
mB2.setOnClickListener(this);
mB3.setOnClickListener(this);
mB4.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int ID = v.getId();
switch (ID) {
case R.id.mB://縮放
//1.創建一個新的圖片,用來進行處理
newBitmap=Bitmap.createBitmap(bitmap.getWidth()/2, bitmap.getHeight()/2, Bitmap.Config.ARGB_4444);
//2.創建一個矩陣,用來對圖片進行處理
Matrix matrix=new Matrix();
//3.矩陣處理圖片的公式
matrix.postScale(0.5f,0.5f);
//4.將新創的圖片當作畫板
Canvas canvas=new Canvas(newBitmap);
//5.根據寫的處理公式,用過畫布對圖片進行矩陣處理
canvas.drawBitmap(bitmap, matrix, null);
//6.將處理完的圖片設置給控件
mIv.setImageBitmap(newBitmap);
break;
case R.id.mB2://平移
newBitmap=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_4444);
Matrix matrix2=new Matrix();
matrix2.postTranslate(0f, 50f);
Canvas canvas2=new Canvas(newBitmap);
canvas2.drawBitmap(bitmap, matrix2, null);
mIv.setImageBitmap(newBitmap);
break;
case R.id.mB3:
//旋轉
Matrix matrix3=new Matrix();
newBitmap=Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas3=new Canvas(newBitmap);
matrix3.postRotate(180, bitmap.getWidth()/2, bitmap.getHeight()/2);
canvas3.drawBitmap(bitmap, matrix3, null);
mIv.setImageBitmap(newBitmap);
break;
case R.id.mB4:
//錯切
newBitmap=Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_4444);
Matrix matrix4=new Matrix();
Canvas canvas4=new Canvas(newBitmap);
matrix4.postSkew(1f, 0f);
canvas4.drawBitmap(bitmap, matrix4, null);
mIv.setImageBitmap(newBitmap);
break;
}
}
}