1、首先建立一個Bitmap圖片,並指定大小;
2、在該圖片上建立一個新的畫布Canvas,然後在畫布上繪製,並儲存即可;
3、需要儲存的目錄File,注意如果寫的目錄如“/sdcard/song/”如果不存在的話,要先建立(file.mkdirs).。
4、需要添加許可權:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Canvas是一個畫布,你可以建立一個空白的畫布,就直接new一個Canvas對象,不需要參數。也可以先使用BitmapFactory建立一個Bitmap對象,作為新的Canvas對象的參數,也就是說這個畫布不是空白的,如果你想儲存圖片的話,最好是Bitmap是一個新的,而不是從某個檔案中讀入進來的,或者是Drawable對象。然後使用Canvas畫第一張圖上去,在畫第二張圖上去,最後使用Canvas.save(int flag)的方法進行儲存,注意save方法裡面的參數可以儲存單個圖層,如果是儲存全部圖層的
話使用 save( Canvas.ALL_SAVE_FLAG )。
關於圖片旋轉問題不懂的話,請看博文:Android學習筆記之Bitmap位元影像的旋轉
這是原圖片和旋轉後圖片
這是儲存到本地的圖片800*600 JPG格式
具體實現:
package xiaosi.bitmap;</p><p>import android.app.Activity;<br />import android.os.Bundle;</p><p>public class mianActivity extends Activity<br />{</p><p>private BitmapView bitmapView = null;<br />@Override<br />protected void onCreate(Bundle savedInstanceState)<br />{<br />super.onCreate(savedInstanceState);<br />bitmapView = new BitmapView(this);<br />setContentView(bitmapView);<br />}<br />}<br />
BitmapView.java
package xiaosi.bitmap;</p><p>import java.io.File;<br />import java.io.FileOutputStream;</p><p>import android.content.Context;<br />import android.content.res.Resources;<br />import android.graphics.Bitmap;<br />import android.graphics.Bitmap.Config;<br />import android.graphics.BitmapFactory;<br />import android.graphics.Canvas;<br />import android.graphics.Color;<br />import android.graphics.Matrix;<br />import android.view.View;</p><p>public class BitmapView extends View<br />{<br />private Matrix matrix = null;<br />public BitmapView(Context context)<br />{<br />super(context);<br />}</p><p>public void onDraw(Canvas canvas)<br />{</p><p>// 擷取資源檔的引用res<br />Resources res = getResources();<br />// 擷取圖形資源檔<br />Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.h);<br />// 設定canvas畫布背景為白色<br />canvas.drawColor(Color.BLACK);<br />canvas.drawBitmap(bmp, 0, 0, null);<br />// 定義矩陣對象<br />matrix = new Matrix();<br />//旋轉30度<br />matrix.postRotate(30);<br />Bitmap bitmap = Bitmap.createBitmap(bmp, 0, 50, bmp.getWidth(), bmp.getHeight()/2,<br />matrix, true);<br />canvas.drawBitmap(bitmap, 0, 250, null);<br />SaveBitmap(bitmap);<br />}<br />//儲存到本地<br />public void SaveBitmap(Bitmap bmp)<br />{<br />Bitmap bitmap = Bitmap.createBitmap(800, 600, Config.ARGB_8888);<br />Canvas canvas = new Canvas(bitmap);<br />//載入背景圖片<br />Bitmap bmps = BitmapFactory.decodeResource(getResources(), R.drawable.playerbackground);<br />canvas.drawBitmap(bmps, 0, 0, null);<br />//載入要儲存的畫面<br />canvas.drawBitmap(bmp, 10, 100, null);<br />//儲存全部圖層<br />canvas.save(Canvas.ALL_SAVE_FLAG);<br />canvas.restore();<br />//儲存路徑<br />File file = new File("/sdcard/song/");<br />if(!file.exists())<br />file.mkdirs();<br />try {<br />FileOutputStream fileOutputStream = new FileOutputStream(file.getPath() + "/xuanzhuan.jpg");<br />bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fileOutputStream);<br />fileOutputStream.close();<br />System.out.println("saveBmp is here");<br />} catch (Exception e) {<br />e.printStackTrace();<br />}<br />}<br />}<br />
原始碼下載:點擊開啟連結