使用Android相机Intent拍照时,我得到的是低质量的位图图像.我想知道是否有可能使这个图像体面的质量.
我搜索了一些有关它的信息,我认为我必须使用'EXTRA_OUTPUT'(http://developer.android.com/reference/android/provider/MediaStore.html#ACTION_IMAGE_CAPTURE)
我正在努力,因为我不知道放在哪里,我不知道它是否能解决我的问题.
按btnTakePhoto后,我改变布局并打开Android摄像头.位图以第二种布局(低质量)显示.这是我的代码:
import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
public class Camera extends AppCompatActivity {
ImageButton btnTakePhoto;
ImageView imgTakenPhoto;
private static final int CAM_REQUEST = 1313;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.camera);
btnTakePhoto = (ImageButton) findViewById(R.id.buttonFoto);
imgTakenPhoto = (ImageView) findViewById(R.id.genomenFoto);
btnTakePhoto.setOnClickListener(new btnTakePhotoClicker());
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == CAM_REQUEST){
setContentView(R.layout.share);
Bitmap thumbnail = …Run Code Online (Sandbox Code Playgroud) 我想用我使用内置Android相机制作的图片更新ImageView.我使用以下代码:
void getPhoto() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, TAKE_PICTURE);
}
Run Code Online (Sandbox Code Playgroud)
之后我获得了这张照片:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
ImageView photoView = (ImageView) findViewById(R.id.photoId);
photoView.setImageBitmap(photo);
}
}
Run Code Online (Sandbox Code Playgroud)
但是使用这个代码,无论我做什么,我只得到我制作的照片的缩略图 - 我的问题是我如何才能获得刚拍摄的照片的Uri,以便不使用缩略图而是使用原始图像?
PS.我实际上需要照片的缩略图,但我也需要原始照片的Uri.
我知道有很多这方面的例子,但我还没有找到一个适用于7.0+的可靠例子.我知道我正在设置图像的缩略图而不是原始图像,但我不知道如何获得它.
这是我的代码:
if( ContextCompat.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},
CAMERA_REQUEST_CODE);
}
}else{
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, CAMERA_REQUEST_CODE);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CAMERA_REQUEST_CODE&& resultCode == RESULT_OK && data != null ) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
mImageView.setImageBitmap(bitmap);
}}
Run Code Online (Sandbox Code Playgroud) 我希望高质量的图像显示ImageView并上传到服务器。我已经在 Internet、StackOverflow 和 GitHub 上搜索过,但找不到答案,也许有人知道如何解决?
protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { //work android
super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
imageReturnedIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//try
if (resultCode == RESULT_OK ) {// work every android than need click OK
//working
Uri selectedImage = imageReturnedIntent.getData();//convert to for bitmap that can send
Bundle extras = imageReturnedIntent.getExtras();//finish converting and copy the image
bitmap = extras.getParcelable("data");//receive image to bitmap
imageView.setImageBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)
onCreate:
btnCamera.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用相机将图像上传到 firebase。但是,我得到的图像质量太低(不可读)。我编写了以下代码(没有编译错误)。但是,无法理解为什么它无法生成可读的图像。
我尝试改变 bitmap.compress 的质量参数,但图像质量保持不变。但相同的压缩代码适用于来自图库的图像。
uploadPp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new AlertDialog.Builder(infoPp.this, android.R.style.Theme_Material_Dialog_NoActionBar_MinWidth);
} else {
builder = new AlertDialog.Builder(infoPp.this);
}
builder.setTitle("Picture Source")
.setMessage("Select source of picture")
.setPositiveButton("Camera", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE_CNIC);
}
}
})
.setNegativeButton("Gallery", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = …Run Code Online (Sandbox Code Playgroud)