Android 多媒體開發學習之建立圖片的副本
什麼叫建立圖片的副本? 因為我們直接從BitmapFactory取出來的圖片是可讀的,是不可以修改的。 假設使用者想修改這張圖片,一般是先根據原圖在記憶體中建立和原圖一模一樣大小的圖片,然後在上面修改,使用者感覺好像是在原圖上修改了,其實不然。
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1: 先需要擷取到原圖片. 注意:我們獲得的圖片是唯讀,是不能寫的,如果想修改圖片,就得建立圖片的copy Bitmap bmsRc = BitmapFactory.decodeResource(getResources(), R.drawable.abc); //2:建立圖片的copy,可以在記憶體中建立一個和原圖一模一樣大小的bitmap Bitmap bmCopy = Bitmap.createBitmap(bmsRc.getWidth(), bmsRc.getHeight(), bmsRc.getConfig()); //2.1 建立一個畫筆 Paint paint = new Paint(); //2.2 建立畫板對象 Canvas canvas = new Canvas(bmCopy); //2.3 開始繪製和原圖一模一樣 canvas.drawBitmap(bmsRc, new Matrix(), paint); //在圖片上繪製一條直線,代表圖片的副本是可以修改的 canvas.drawLine(30, 30, 400, 400, paint); ImageView iv_src = (ImageView) findViewById(R.id.lv1); ImageView iv_copy = (ImageView) findViewById(R.id.lv2); //顯示 iv_src.setImageBitmap(bmsRc); iv_copy.setImageBitmap(bmCopy); }}其實建立圖片的副本很簡單,就如上代碼描述一樣
如下:
可以明顯的看見,第二張圖片是可以修改的。