Hier der vollständige Quellcode von Bild holen aus der Galerie und erfassen Bild von Camara. Hier ist auch Option für das Zuschneiden Bild ist verfügbar .happy Coding verwenden selectImageOption() -Methode, in dem Button oder Bild klicken, sogar Sie wollen.
private static final int CAMERA_CODE = 101, GALLERY_CODE = 201, CROPING_CODE = 301;
private Uri mImageCaptureUri;
private File outPutFile = null;
String encodedImage = "";
String path = "";
private void selectImageOption() {
final CharSequence[] items = {"Capture Photo", "Choose from Gallery", "Cancel"};
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Select Photo!");
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item) {
if (items[item].equals("Capture Photo")) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File f = new File(android.os.Environment.getExternalStorageDirectory(), "temp1.jpg");
mImageCaptureUri = Uri.fromFile(f);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
startActivityForResult(intent, CAMERA_CODE);
} else if (items[item].equals("Choose from Gallery")) {
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, GALLERY_CODE);
} else if (items[item].equals("Cancel")) {
dialog.dismiss();
}
}
});
builder.show();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); // data = //file:///mnt/sdcard/temp.jpg
if (requestCode == GALLERY_CODE && resultCode == RESULT_OK && null != data) {
mImageCaptureUri = data.getData(); // content://media/external/images/media/116
System.out.println("Gallery Image URI : " + mImageCaptureUri);
//CropingIMG();
onSelectFromGalleryResult(data);
} else if (requestCode == CAMERA_CODE && resultCode == RESULT_OK) {
System.out.println("Camera Image URI : " + mImageCaptureUri);
CropingIMG();
//onCaptureImageResult(data);
} else if (requestCode == CROPING_CODE && resultCode == RESULT_OK) {
try {
if (outPutFile.exists()) {
Bitmap photo = Common.decodeFile(outPutFile);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
photo.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
byte[] imageBytes = bytes.toByteArray();
encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
img_profile_personal_image.setImageBitmap(photo);
// img_profile_personal_image.setBackgroundColor(Color.TRANSPARENT);
} else {
Toast.makeText(context, "Error while save image", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void onCaptureImageResult(Intent data) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
thumbnail.compress(Bitmap.CompressFormat.JPEG, 50, bytes);
byte[] imageBytes = bytes.toByteArray();
encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
File destination = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpeg");
FileOutputStream fo;
try {
destination.createNewFile();
fo = new FileOutputStream(destination);
fo.write(bytes.toByteArray());
fo.flush();
fo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//Uri tempUri = getImageUri(mContext, thumbnail);
path = destination.getAbsolutePath();
if (new File(path).exists()) {
//Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG).show();
}
ivUserPic.setImageBitmap(thumbnail);
}
private void onSelectFromGalleryResult(Intent data) {
Bitmap bm = null;
if (data != null) {
try {
bm = Common.getCorrectlyOrientedImage(context, data.getData());
Uri fileUri = data.getData();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
path = getPath(getActivity().getApplicationContext(), fileUri);
}
File file = new File(path);
if (file.exists()) {
Toast.makeText(mContext, "File " + file.getAbsolutePath(), Toast.LENGTH_LONG).show();
}
Log.d("", "Video URI= " + fileUri);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
byte[] imageBytes = bytes.toByteArray();
encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
ivUserPic.setImageBitmap(bm);
}
}
private void CropingIMG() {
final ArrayList<CropingOption> cropOptions = new ArrayList<CropingOption>();
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent, 0);
int size = list.size();
if (size == 0) {
Toast.makeText(context, "Cann't find image croping app", Toast.LENGTH_SHORT).show();
return;
} else {
intent.setData(mImageCaptureUri);
intent.putExtra("outputX", 512);
intent.putExtra("outputY", 512);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
//Create output file here
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(outPutFile)); // "/mnt/sdcard/temp.jpg"
if (size == 1) {
Intent i = new Intent(intent);
ResolveInfo res = (ResolveInfo) list.get(0);
i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
startActivityForResult(i, CROPING_CODE);
} else {
for (ResolveInfo res : list) {
final CropingOption co = new CropingOption();
co.title = getActivity().getPackageManager().getApplicationLabel(res.activityInfo.applicationInfo);
co.icon = getActivity().getPackageManager().getApplicationIcon(res.activityInfo.applicationInfo);
co.appIntent = new Intent(intent);
co.appIntent.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
cropOptions.add(co);
}
CropingOptionAdapter adapter = new CropingOptionAdapter(context, cropOptions);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Choose Croping App");
builder.setCancelable(false);
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
startActivityForResult(cropOptions.get(item).appIntent, CROPING_CODE);
}
});
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (mImageCaptureUri != null) {
context.getContentResolver().delete(mImageCaptureUri, null, null);
mImageCaptureUri = null;
}
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
}
Comman.java
public static Bitmap getCorrectlyOrientedImage(Context context, Uri photoUri) throws IOException {
InputStream is = context.getContentResolver().openInputStream(photoUri);
BitmapFactory.Options dbo = new BitmapFactory.Options();
dbo.inJustDecodeBounds = true;
BitmapFactory.decodeStream(is, null, dbo);
is.close();
int rotatedWidth, rotatedHeight;
int orientation = getOrientation(context, photoUri);
if (orientation == 90 || orientation == 270) {
rotatedWidth = dbo.outHeight;
rotatedHeight = dbo.outWidth;
} else {
rotatedWidth = dbo.outWidth;
rotatedHeight = dbo.outHeight;
}
Bitmap srcBitmap;
int MAX_IMAGE_WIDTH = 1024;
int MAX_IMAGE_HEIGHT = 1024;
is = context.getContentResolver().openInputStream(photoUri);
if (rotatedWidth > MAX_IMAGE_WIDTH || rotatedHeight > MAX_IMAGE_HEIGHT) {
float widthRatio = ((float) rotatedWidth)/((float) MAX_IMAGE_WIDTH);
float heightRatio = ((float) rotatedHeight)/((float) MAX_IMAGE_HEIGHT);
float maxRatio = Math.max(widthRatio, heightRatio);
// Create the bitmap from file
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = (int) maxRatio;
srcBitmap = BitmapFactory.decodeStream(is, null, options);
} else {
srcBitmap = BitmapFactory.decodeStream(is);
}
is.close();
/*
* if the orientation is not 0 (or -1, which means we don't know), we
* have to do a rotation.
*/
if (orientation > 0) {
Matrix matrix = new Matrix();
matrix.postRotate(orientation);
srcBitmap = Bitmap.createBitmap(srcBitmap, 0, 0, srcBitmap.getWidth(),
srcBitmap.getHeight(), matrix, true);
}
return srcBitmap;
}
Dies ist der Pfad, den ich bekomme für die Kamera Bild: file: ///storage/emulated/0/Pictures/PhysiotherapyProfileImage/Profile.jpg.Dies ist der Pfad, den ich für Galerie Bild: Datei: /// Speicher/emuliert bekommen /0/Pictures/PhysiotherapyProfileImage/Profile.jpg .. müssen Dateipfad für Galerie ähnlich der Kamera – Abhinay
@Abhinay können Sie eine neue JPG-Datei aus Bitmap auf externen Speicher erstellen. Und diesen Pfad für den nächsten Schritt verwenden. Datei f = neue Datei (context.getCacheDir(), Dateiname); f.createNewFile(); // Bitmap in Byte-Array konvertieren Bitmap Bitmap = Ihre Bitmap; ByteArrayOutputStream bos = neues ByteArrayOutputStream(); bitmap.compress (CompressFormat.PNG, 0/* ignoriert für PNG * /, bos); byte [] bitmapdata = bos.toByteArray(); // schreibe die Bytes in die Datei FileOutputStream fos = new FileOutputStream (f); fos.write (Bitmapdaten); fos.flush(); fos.close(); – mandeepsinghn