无法使用 google 张照片上传图片
Couldn't upload a picture using google photos
我使用这段代码从图库中获取图像,然后在保存之前裁剪图像。它 运行 很好地用于 android 内置画廊,但在 onActivityResult 方法中给出 NullPointerException,我们在 google 上使用 google 照片应用程序时得到 extras.getParcelable("data") =16=]。任何帮助,将不胜感激。提前致谢 :D
//This is called in oncreate() on clicking the upload from gallery button.
Intent galleryIntent = new Intent(Intent.ACTION_PICK , android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
galleryIntent.setType("image/*");
galleryIntent.putExtra("crop", "true");
startActivityForResult(galleryIntent,PICK_FROM_FILE);
//This is called on onActivityResult() method
if (requestCode == PICK_FROM_FILE && data != null) {
Bundle extras = data.getExtras();
//get the cropped bitmap from extras
Bitmap thePic = extras.getParcelable("data");
//do whatever with thePic
}
它对我有用。
//This is my onActivityResult method.
if (resultCode == RESULT_OK && data != null) {
final Uri selectedImage = data.getData();
String root = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";
File createDir = new File(root + "AppName" + File.separator);
if (!createDir.exists()) {
createDir.mkdirs();
}
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyhhmmss");
String format = s.format(new Date());
File file = new File(root + "AppName" + File.separator + format);
if (!file.exists()) {
try {
file.createNewFile();
copyFile(new File(getRealPathFromURI(selectedImage)), file);
} catch (IOException e) {
e.printStackTrace();
}
}
String filePath = file.GetAbsolutePath();
Bitmap bitmap = BitmapFactory.decodeFile(filepath);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, bos);
int height = bitmap.getHeight();
int width = bitmap.getWidth();
Bitmap bmp = Bitmap.createScaledBitmap(bitmap, 100, 100, true);
mImageView.setImageBitmap(bmp);
}
这是我在其中使用的 copyFile 方法。
private void copyFile(File sourceFile, File destFile) throws IOException {
if (!sourceFile.exists()) {
return;
}
FileChannel source = null;
FileChannel destination = null;
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
if (destination != null && source != null) {
destination.transferFrom(source, 0, source.size());
}
if (source != null) {
source.close();
}
if (destination != null) {
destination.close();
}
}
希望它也对你有用:D
我使用这段代码从图库中获取图像,然后在保存之前裁剪图像。它 运行 很好地用于 android 内置画廊,但在 onActivityResult 方法中给出 NullPointerException,我们在 google 上使用 google 照片应用程序时得到 extras.getParcelable("data") =16=]。任何帮助,将不胜感激。提前致谢 :D
//This is called in oncreate() on clicking the upload from gallery button.
Intent galleryIntent = new Intent(Intent.ACTION_PICK , android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
galleryIntent.setType("image/*");
galleryIntent.putExtra("crop", "true");
startActivityForResult(galleryIntent,PICK_FROM_FILE);
//This is called on onActivityResult() method
if (requestCode == PICK_FROM_FILE && data != null) {
Bundle extras = data.getExtras();
//get the cropped bitmap from extras
Bitmap thePic = extras.getParcelable("data");
//do whatever with thePic
}
它对我有用。
//This is my onActivityResult method.
if (resultCode == RESULT_OK && data != null) {
final Uri selectedImage = data.getData();
String root = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";
File createDir = new File(root + "AppName" + File.separator);
if (!createDir.exists()) {
createDir.mkdirs();
}
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyhhmmss");
String format = s.format(new Date());
File file = new File(root + "AppName" + File.separator + format);
if (!file.exists()) {
try {
file.createNewFile();
copyFile(new File(getRealPathFromURI(selectedImage)), file);
} catch (IOException e) {
e.printStackTrace();
}
}
String filePath = file.GetAbsolutePath();
Bitmap bitmap = BitmapFactory.decodeFile(filepath);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 85, bos);
int height = bitmap.getHeight();
int width = bitmap.getWidth();
Bitmap bmp = Bitmap.createScaledBitmap(bitmap, 100, 100, true);
mImageView.setImageBitmap(bmp);
}
这是我在其中使用的 copyFile 方法。
private void copyFile(File sourceFile, File destFile) throws IOException {
if (!sourceFile.exists()) {
return;
}
FileChannel source = null;
FileChannel destination = null;
source = new FileInputStream(sourceFile).getChannel();
destination = new FileOutputStream(destFile).getChannel();
if (destination != null && source != null) {
destination.transferFrom(source, 0, source.size());
}
if (source != null) {
source.close();
}
if (destination != null) {
destination.close();
}
}
希望它也对你有用:D