我可以创建Android应用拍照然后上传到数据库
我想创建Android应用拍照,然后我们可以对编辑文本视图做点评论,当我点击发送按钮时,图片和评论将会出现在数据库(所以我们可以用笔记本电脑看数据库的结果)我可以创建Android应用拍照然后上传到数据库
这是你如何拍摄一张照片,然后将其上传到图片浏览:
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。
您可以使用下面的代码来捕捉图像:
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
现在,这个图片上传到数据库:
- 将捕获的图像转换为Base64字符串。 (imageToString)
- 发送的Base64串到你的PHP的Web服务使用您的首选库。
- 在后端,将Base64字符串返回到图片并将图像存储到数据库中。
- 商店位置(完整路径或链接)的图像在你的MySQL数据库中以便将来检索图像。
检查this answer如何将图像上传到数据库。
我已经创建了我自己的,但它显示空指针异常 –
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; } –
@AmirullahAchmadNassardhi如果位图为空,你将得到一个空指针异常。你能告诉我你是如何获得(或生成)你的位图吗? – Harshil
是的,你可以创建这样一个应用程序。 –
我该如何开始? –