Я хочу сохранить свою фотографию в моей созданной папке с ее фактическим размером. Для этого я пробовал много кода, но во всех случаях фотография сохранялась в галерее с ее фактическим размером, но когда я сохранил эту фотографию в своем местоположении, тогда фото сжалось. После этого я попытался скопировать фотографию из галереи в мою папку, чтобы получить фотографию с ее фактическим размером. В этом случае фото справляется, но не с его фактическим размером. Он снова сжимается. Для открытия камеры:Android: как сохранить изображение в моей папке с ее фактическим размером
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(
Intent.createChooser(cameraIntent, "Select Picture"),
CAMERA_REQUEST);
после этого в onActivityResult метод:
try {
if (requestCode == CAMERA_REQUEST) {
Bitmap photo = (Bitmap) data.getExtras().get("data");
if (photo != null) {
imageView.setImageBitmap(photo);
}
// Image name
final ContentResolver cr = getContentResolver();
final String[] p1 = new String[] {
MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.DATE_TAKEN };
Cursor c1 = cr.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, p1, null,
null, p1[1] + " DESC");
if (c1.moveToFirst()) {
String uristringpic = "content://media/external/images/media/"
+ c1.getInt(0);
Uri newuri = Uri.parse(uristringpic);
// Log.i("TAG", "newuri "+newuri);
String snapName = getRealPathFromURI(newuri);
Uri u = Uri.parse(snapName);
File f = new File("" + u);
String fileName = f.getName();
editTextPhoto.setText(fileName);
checkSelectedItem = true;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
photo.compress(CompressFormat.PNG, 0 /* ignored for PNG */,
bos);
byte[] bitmapdata = bos.toByteArray();
// Storing Image in new folder
// StoreByteImage(mContext, bitmapdata, 100, fileName);
copyImageFromGallery(newuri);
// To appear images in created folder of Gallery dynamically
// as soon as they
// are captured.
sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
// Delete the image from the Gallery
getContentResolver().delete(newuri, null, null); // for delete
}
c1.close();
}
} catch (NullPointerException e) {
System.out.println("Error in creating Image." + e);
} catch (Exception e) {
System.out.println("Error in creating Image." + e);
}
теперь я копирование моего изображения формы Галереи моей папки:
protected void copyImageFromGallery(Uri uri){
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String sourceImagePath= uri.toString();
File sdImageMainDirectory = new File(
Environment.getExternalStorageDirectory() + "/pix/images");
if (!sdImageMainDirectory.exists()) {
sdImageMainDirectory.mkdirs();
}
String destinationImagePath= Environment.getExternalStorageDirectory() + "/pix/images";
File source= new File(data, souceImagePath);
File destination= new File(sd, destinationImagePath);
if (source.exists()) {
FileChannel src = new FileInputStream(source).getChannel();
FileChannel dst = new FileOutputStream(destination).getChannel();
dst.transferFrom(src, 100, src.size());
src.close();
dst.close();
}
}} catch (Exception e) {}
}
здесь фото переписывающего в моей папке, но до ее сжатия.
ранее я использовал этот код, но этот код также сохраняет фотографию в сжатом формате. –
Я точно не знаю, но я думаю, что должно быть что-то вроде cameraIntent.putExtra (MediaStore.EXTRA_QUALITY, 1), где 1 для высокого качества и 0 для низкого качества. но не уверен. проверьте его как-то –
здесь мое Eclipse показывает, что «EXTRA_QUALITY не может быть разрешен или не является полем». EXTRA_VIDEO_QUALITY есть для видео. –