Я разрабатываю приложение для камеры, моя проблема заключается в том, что на некоторых устройствах изображения, сделанные камерой, вращаются при настройке изображения в изображение, поэтому я искал решение, и я нашел решение по этой ссылке. camera intent auto rotate to 90 degree. Моя проблема в том, когда я называю метод для создания повернутого растрового изображения, он показывает NPE на следующей строкеИсключение Null Pointer на Bitmap.createBitmap в Android
Bitmap rotatedBitmap = Bitmap.createBitmap(bitencoded, 0, 0, bitencoded.getWidth(),
bitencoded.getHeight(), matrix, true);
Полный код
private Bitmap rotateCam()
{
Matrix matrix = new Matrix();
matrix.postRotate(getImageOrientation(picturePath));
Bitmap rotatedBitmap = Bitmap.createBitmap(bitencoded, 0, 0, bitencoded.getWidth(),
bitencoded.getHeight(), matrix, true);
imageView.setImageBitmap(rotatedBitmap);
return rotatedBitmap;
}
LogCat
java.lang.NullPointerException
at project1.me.com.update.ImageUploadActivity.rotateCam(ImageUploadActivity.java:235)
at project1.me.com.update.ImageUploadActivity.onCreate(ImageUploadActivity.java:182)
at android.app.Activity.performCreate(Activity.java:5206)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
at android.app.ActivityThread.access$700(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)
OnCreate
byte[] data = picturePath.getBytes("UTF-8");
String base64PicPath = Base64.encodeToString(data, Base64.DEFAULT);
bitencoded= stringToBitMap(base64PicPath);
try
{
rotateCam();
Log.e(" Rotated", "Method called");
}
catch(Exception e)
{
Log.e("Not Rotated","Method not called");
e.printStackTrace();
Log.e(e.getClass().getName(), e.getMessage(), e);
}
getImageOrie ntation()
public static int getImageOrientation(String imagePath){
int rotate = 0;
try {
File imageFile = new File(imagePath);
ExifInterface exif = new ExifInterface(
imageFile.getAbsolutePath());
int orientation = exif.getAttributeInt(
ExifInterface.TAG_ORIENTATION,
ExifInterface.ORIENTATION_NORMAL);
switch (orientation) {
case ExifInterface.ORIENTATION_ROTATE_270:
rotate = 270;
break;
case ExifInterface.ORIENTATION_ROTATE_180:
rotate = 180;
break;
case ExifInterface.ORIENTATION_ROTATE_90:
rotate = 90;
break;
}
} catch (IOException e) {
e.printStackTrace();
}
return rotate;
}
Я новичок, я не мог найти причины NPE.Can anybode помочь мне? .Thanx заранее.
'bitencoded' является нулевым – Blackbelt
Я преобразовал ImagePath, чтобы растровое изображение, и я установил, что растровый этот метод, но все же NPE на следующий line.Can вас Помогите? – Tom
Пожалуйста, см. Мое редактирование – Tom