儲存至內部記憶體(內存):
以下程式碼是將照片以.JPG檔的形式儲存至內部記憶體中。PictureCallback camJpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { // 用來接收壓縮成jpeg格式的影像資料 FileOutputStream outStream = null; try { //儲存在內部記憶體 Bitmap bm =BitmapFactory.decodeByteArray(data, 0, data.length); outStream = openFileOutput("photo.jpg", Context.MODE_PRIVATE); bm.compress(CompressFormat.JPEG, 80, outStream); outStream.flush(); outStream.close(); Toast.makeText(PKActivity.this, "存檔完成!", Toast.LENGTH_SHORT) .show(); Intent intent=new Intent(); intent.setClass(PKActivity.this, PK_ResultActivity.class); startActivity(intent); PKActivity.this.finish(); } catch (IOException e) { Toast.makeText(PKActivity.this, "影像檔儲存錯誤!", Toast.LENGTH_SHORT) .show(); }
程式說明:
Bitmap bm =BitmapFactory.decodeByteArray(data, 0, data.length);
將char[] 轉換成Bitmap 的形式。FileOutputStream outStream = openFileOutput("FileName",MODE_WORLD_READABLE);
使用openFileOutput來建立FileOutputStream 。
FileName只要檔名即可,不用完整路徑。
Context.MODE_PRIVATE:代表該檔是私有資料,只能被APP本身存取。如果檔案已存在,會覆蓋原檔。 Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_PRIVATE:代表該檔是私有資料,只能被APP本身存取。如果檔案已存在,會覆蓋原檔。
Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。
Context.MODE_APPEND:會檢查檔案是否存在,檔案存在會將內容新增檔案內;如檔案不存在就建立新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀取。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。
Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。
bm.compress(CompressFormat.JPEG, 80, outStream);
將Bitnap以80%的壓縮存成JPG檔,用FileOutputStream 方式存入。
儲存至SD卡
PictureCallback camJpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { // 用來接收壓縮成jpeg格式的影像資料 FileOutputStream outStream = null; try { //儲存在外部SD outStream = new FileOutputStream("/sdcard/photo.jpg"); outStream.write(data); outStream.close(); Toast.makeText(PKActivity.this, "存檔完成!", Toast.LENGTH_SHORT) .show(); Intent intent=new Intent(); intent.setClass(PKActivity.this, PK_ResultActivity.class); startActivity(intent); PKActivity.this.finish(); } catch (IOException e) { Toast.makeText(PKActivity.this, "影像檔儲存錯誤!", Toast.LENGTH_SHORT) .show(); }
沒有留言:
張貼留言