Я хочу сохранить мою фотографию в созданной папке с ее фактическим размером. Для этого я перепробовал много кода, но в любом случае фотография сохранялась в галерее с ее фактическим размером, но когда я сохранил эту фотографию в моем местоположении, то фотография сжимается.
После этого я попытался скопировать фотографию из Галереи в свою папку, чтобы получить фотографию с ее реальным размером. В этом случае фотография копируется, но не с ее фактическим размером. Это снова сжимается.
Для открытия камеры:
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) {}
}
здесь фотография копируется в мою папку, но пока она не сжата.