[英]Capture Image from Camera and Display in Imageview
I want to display the image I took inside an imageview but it doesn't display the image.我想显示我在 imageview 中拍摄的图像,但它不显示图像。 I checked these pages but got no results: Image captured from camera not displaying in imageview android
我检查了这些页面但没有得到任何结果: 从相机捕获的图像未显示在 imageview android
Capture Image from Camera and Display in Activity 从相机捕获图像并在活动中显示
my activity:我的活动:
public class MainActivity extends AppCompatActivity {
Button btncam;
ImageView imgpic;
final int take=10;
long name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgpic=(ImageView)findViewById(R.id.imgpic);
btncam=(Button)findViewById(R.id.btncamera);
btncam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
name=System.currentTimeMillis();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(G.appadress+"/"+name+".jpg")));
startActivityForResult(intent,take);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch (requestCode){
case take:
Bitmap bitmap= BitmapFactory.decodeFile(G.appadress+"/"+name+".jpg");
imgpic.setImageBitmap(bitmap);
}
}
}
class G: class G:
public class G extends Application {
public static Context context;
public static String appadress= Environment.getExternalStorageDirectory().getAbsolutePath();
@Override
public void onCreate() {
super.onCreate();
context=getApplicationContext();
File file=new File(appadress);
file.mkdirs();
}
}
manifest:显现:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Try:尝试:
public class MainActivity extends AppCompatActivity {
Button btncam;
ImageView imgpic;
final int take = 10;
Bitmap bitmap;
long name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgpic = (ImageView) findViewById(R.id.imgpic);
btncam = (Button) findViewById(R.id.btncamera);
btncam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
super.onActivityResult(requestCode, resultCode, data);
if (data.getExtras() != null) {
bitmap = (Bitmap) data.getExtras().get("data");
try {
File imageFile = createImageFile();
OutputStream stream = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
stream.flush();
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
imgpic.setImageBitmap(bitmap);
}
}
}
public File createImageFile() throws IOException {
// Create an imageView file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getStorageDir();
File image = File.createTempFile(
imageFileName, /* prefix */
".jpeg", /* suffix */
storageDir /* directory */
);
// Save a file: path for use with ACTION_VIEW intents
return image;
}
private File getStorageDir() {
File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES + "/PathPhoto"); //Environment.DIRECTORY_PICTURES -->> it is path for Pictures
if (storageDir != null) {
if (!storageDir.mkdirs()) {
if (!storageDir.exists()) {
Log.d("CameraSample", "failed to create directory");
return null;
}
}
}
return storageDir;
}
} }
I prefer Android Image Cropper library, automatically handles Importing or Capturing images.我更喜欢Android Image Cropper库,自动处理导入或捕获图像。
private void onCaptureClick(){
CropImage.activity()
.setGuidelines(CropImageView.Guidelines.ON)
.start(this);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
CropImage.ActivityResult result = CropImage.getActivityResult(data);
if (resultCode == RESULT_OK) {
Uri resultUri = result.getUri();
} else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
Exception error = result.getError();
}
}
}
class G: class G:
public class G extends Application {
public static Context context;
public static String appadress= Environment.getExternalStorageDirectory().getAbsolutePath()+"/reza";
@Override
public void onCreate() {
super.onCreate();
context=getApplicationContext();
File file=new File(appadress);
file.mkdirs();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.