2017-09-23 78 views

回答

0

這是你如何拍攝一張照片,然後將其上傳到圖片瀏覽:

public void getPhoto() { 

    Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(intent, 1); 

} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 

    if (requestCode == 1) { 

     if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

      getPhoto(); 

     } 


    } 

} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 

     requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1); 

    } else { 

     getPhoto(); 

    } 



} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == 1 && resultCode == RESULT_OK && data != null) { 

     Uri selectedImage = data.getData(); 

     try { 

      Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage); 

      ImageView imageView = (ImageView) findViewById(R.id.imageView); 
      imageView.setImageBitmap(bitmap); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

} 

爲了將其保存在數據庫中,檢查this

0

您可以使用下面的代碼來捕捉圖像:

public void captureImage() { 
    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      requestPermissions(new String[]{ 
        android.Manifest.permission.CAMERA 
      }, 6); 
     } 
     return; 
    } 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (intent.resolveActivity(getPackageManager()) != null) { 
     startActivityForResult(intent, CAMERA_REQUEST_CODE); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case 6: 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       captureImage(); 
      } 
    } 
} 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    uploading.show(); 
    if (requestCode == CAMERA_REQUEST_CODE && resultCode == RESULT_OK) { 
     bitmap = (Bitmap) data.getExtras().get("data"); 
    } else if (requestCode == GALLERY_INTENT && resultCode == RESULT_OK) { 
     try { 
      bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData()); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    if (bitmap != null) { 
     toStringImage(bitmap); //this function will convert image into Base64 string 
    } else { 
     uploading.dismiss(); 
    } 
} 

在檢查相同的代碼在GitHub上: captureImage

現在,這個圖片上傳到數據庫:

  1. 將捕獲的圖像轉換爲Base64字符串。 (imageToString
  2. 發送的Base64串到你的PHP的Web服務使用您的首選庫。
  3. 在後端,將Base64字符串返回到圖片並將圖像存儲到數據庫中。
  4. 商店位置(完整路徑或鏈接)的圖像在你的MySQL數據庫中以便將來檢索圖像。

檢查this answer如何將圖像上傳到數據庫。

+0

我已經創建了我自己的,但它顯示空指針異常 –

+0

public String getStringImage(Bitmap bmp){ByteArrayOutputStream baos = new ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.JPEG,bitmap_size,baos); byte [] imageBytes = baos.toByteArray(); String encodedImage = Base64.encodeToString(imageBytes,Base64.DEFAULT); return encodedImage; } –

+0

@AmirullahAchmadNassardhi如果位圖爲空,你將得到一個空指針異常。你能告訴我你是如何獲得(或生成)你的位圖嗎? – Harshil

相關問題