想在 Android 中制作照片,但它会自动将照片缩小到 160x160 像素
Want to make photo in Android, but it automatically downscales the photo to 160x160px
各位程序员大家好。我的问题:每次我拍照时,Android 会自动将其缩小到 160x160 像素。我不知道为什么。这是我的代码:
这里我设置了相机的所有首选项:
public void ChosenPhoto(String extra) {
String gallery = "gallery";
String camera = "camera";
if (extra.equals(gallery)) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("return-data", true);
intent.putExtra("aspectX", 560);
intent.putExtra("aspectY", 560);
intent.putExtra("outputX", 560);
intent.putExtra("outputY", 560);
intent.putExtra("noFaceDetection", true);
intent.putExtra("screenOrientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, PICK_FROM_GALLERY);
} else if (extra.equals(camera)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 560);
intent.putExtra("aspectY", 560);
intent.putExtra("outputX", 560);
intent.putExtra("outputY", 560);
intent.putExtra("noFaceDetection", true);
intent.putExtra("screenOrientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
intent.putExtra("return-data", true);
startActivityForResult(intent, PICK_FROM_CAMERA);
}
}
这里我以后会用到它:
Bundle extras = data.getExtras();
photoBit = extras.getParcelable("data");
ByteArrayOutputStream PhotoStream = new ByteArrayOutputStream();
photoBit.compress(Bitmap.CompressFormat.PNG, 100, PhotoStream);
photos = PhotoStream.toByteArray();
Log.e(TAG, "Width:" + photoBit.getWidth() );
ImageView.setImageBitmap(photoBit);
在 ImageView 中,我后来看到它被缩小了。更精确:每次到 160x160px...我不知道为什么。
请帮助我。如果您需要更多信息,请提出要求。
"data"返回的实际上只是缩略图,而不是full-sized照片。无法通过这种方式获取 full-sized 图像,但您需要创建一个文件,相机会在其中为您保存图像。可以在标题 "Save the Full-size Photo".
下的 http://developer.android.com/training/camera/photobasics.html 中找到带有解释的工作示例
首先您需要创建一个新文件来存储图像。您可能希望确保文件名不会与其他文件冲突(附加时间戳)。
File file = new File(context.getExternalFilesDir( null ), "photo.jpg");
然后你在意图中指定这个:
intent.putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile( file ) );
activity.startActivityForResult( intent, REQUEST_TAKE_PHOTO );
在 onActivityResult() 中,您将检查是否实际拍摄了照片。您将使用之前创建的 File 实例,它现在具有图像。
if ( ( requestCode == REQUEST_TAKE_PHOTO ) && ( resultCode == RESULT_OK ) ) {
如果想把文件中的图片放到ImageView中,可以这样做:
Bitmap bmp = BitmapFactory.decodeFile( file.getAbsolutePath() );
imageView.setImageBitmap(bmp);
各位程序员大家好。我的问题:每次我拍照时,Android 会自动将其缩小到 160x160 像素。我不知道为什么。这是我的代码:
这里我设置了相机的所有首选项:
public void ChosenPhoto(String extra) {
String gallery = "gallery";
String camera = "camera";
if (extra.equals(gallery)) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("return-data", true);
intent.putExtra("aspectX", 560);
intent.putExtra("aspectY", 560);
intent.putExtra("outputX", 560);
intent.putExtra("outputY", 560);
intent.putExtra("noFaceDetection", true);
intent.putExtra("screenOrientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, PICK_FROM_GALLERY);
} else if (extra.equals(camera)) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 560);
intent.putExtra("aspectY", 560);
intent.putExtra("outputX", 560);
intent.putExtra("outputY", 560);
intent.putExtra("noFaceDetection", true);
intent.putExtra("screenOrientation", ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
intent.putExtra("return-data", true);
startActivityForResult(intent, PICK_FROM_CAMERA);
}
}
这里我以后会用到它:
Bundle extras = data.getExtras();
photoBit = extras.getParcelable("data");
ByteArrayOutputStream PhotoStream = new ByteArrayOutputStream();
photoBit.compress(Bitmap.CompressFormat.PNG, 100, PhotoStream);
photos = PhotoStream.toByteArray();
Log.e(TAG, "Width:" + photoBit.getWidth() );
ImageView.setImageBitmap(photoBit);
在 ImageView 中,我后来看到它被缩小了。更精确:每次到 160x160px...我不知道为什么。
请帮助我。如果您需要更多信息,请提出要求。
"data"返回的实际上只是缩略图,而不是full-sized照片。无法通过这种方式获取 full-sized 图像,但您需要创建一个文件,相机会在其中为您保存图像。可以在标题 "Save the Full-size Photo".
下的 http://developer.android.com/training/camera/photobasics.html 中找到带有解释的工作示例首先您需要创建一个新文件来存储图像。您可能希望确保文件名不会与其他文件冲突(附加时间戳)。
File file = new File(context.getExternalFilesDir( null ), "photo.jpg");
然后你在意图中指定这个:
intent.putExtra( MediaStore.EXTRA_OUTPUT, Uri.fromFile( file ) );
activity.startActivityForResult( intent, REQUEST_TAKE_PHOTO );
在 onActivityResult() 中,您将检查是否实际拍摄了照片。您将使用之前创建的 File 实例,它现在具有图像。
if ( ( requestCode == REQUEST_TAKE_PHOTO ) && ( resultCode == RESULT_OK ) ) {
如果想把文件中的图片放到ImageView中,可以这样做:
Bitmap bmp = BitmapFactory.decodeFile( file.getAbsolutePath() );
imageView.setImageBitmap(bmp);