BitmapFactory --- 建立圖片副本
阿新 • • 發佈:2018-12-14
3,建立原圖的副本
為什麼要建立副本,因為原圖不能被修改。修改則會報錯
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xiaoshuai.www.myapplication/com.xiaoshuai.www.myapplication.MainActivity}:
java.lang.IllegalStateException
【1】主要找到需要的canvas 他需要什麼你就建立什麼。需要一個畫筆,畫布。模板。白紙。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //[1]找到我們關心的控制元件 ImageView iv_src = (ImageView) findViewById(R.id.iv_src); ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy); //[2]把res下tomcat.png圖片展示到iv上 Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.tomcat); //修改原圖 // srcBitmap.setPixel(30,40, Color.RED); iv_src.setImageBitmap(srcBitmap); //[3]建立原圖的副本 相當於我們建立了一個模板 相當於你有了一張白紙 Bitmap copybitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig()); //[3.1]想作畫需要一個畫筆類 Paint paint = new Paint(); //[3.2]想作畫還需要一個畫布 相當於把白紙鋪到了畫布上 Canvas canvas = new Canvas(copybitmap); //[3.3]就可以開始作畫了 參考原圖去作畫 把原圖的內容畫到了白紙上 canvas.drawBitmap(srcBitmap, new Matrix(), paint); //[3.3]修改副本 for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { copybitmap.setPixel(30+i, 40+j, Color.RED); } } //[4]把copybitmap展示到iv_copy上 iv_copy.setImageBitmap(copybitmap); }