Как сохранить файл paint?

#android #eclipse #image #save

#Android #eclipse #изображение #Сохранить

Вопрос:

У меня есть программа paint, в которой нет функции сохранения. Я хочу знать, могу ли я заставить этот код работать?

 // TODO Auto-generated method stub
       OutputStream outStream = null;
       File file = new File(extStorageDirectory, "000.PNG");
       try {
        outStream = new FileOutputStream(file);
        mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
        outStream.flush();
        outStream.close();

        Toast.makeText(ThePatch.this, "Saved", Toast.LENGTH_LONG).show();

       } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(ThePatch.this, e.toString(), Toast.LENGTH_LONG).show();
       } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(ThePatch.this, e.toString(), Toast.LENGTH_LONG).show();
       }

      }
  

Он сохраняет файл, но просто показывает черный экран. и я получаю FC в строке 237 согласно журналу cat.

Строка 237

             mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
  

Logcat

 05-09 21:19:10.405: ERROR/AndroidRuntime(11437): FATAL EXCEPTION: main
05-09 21:19:10.405: ERROR/AndroidRuntime(11437): java.lang.NullPointerException
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at www.hotapp.com.thepatch.html.ThePatch.onOptionsItemSelected(ThePatch.java:237)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at android.app.Activity.onMenuItemSelected(Activity.java:2195)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at android.view.View$PerformClick.run(View.java:8816)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at android.os.Handler.handleCallback(Handler.java:587)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at android.os.Looper.loop(Looper.java:123)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at java.lang.reflect.Method.invokeNative(Native Method)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at java.lang.reflect.Method.invoke(Method.java:521)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at dalvik.system.NativeStart.main(Native Method)
  

вот мой onDraw

 @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(0xFFAAAAAA);

        canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);

        canvas.drawPath(mPath, mPaint);
    }
  

Я взял код отсюда.

Комментарии:

1. Не будет ли проблема в том, что вы сохраняете файл в формате PNG, но используете сжатие JPG?

2. Пожалуйста, включите обход стека при принудительном закрытии.

3. @ BiggsTRC, я надеялся, что это будет так просто, но, к сожалению, я просто попытался измениться . Из PNG в .JPEG. не сработало. Спасибо за предложение.

4. Что за исключение выдано? Действительно ли это сохраняет файл?

5. Я опубликую свой logcat. Он сохраняет файл как файл изображения, но без изображения.

Ответ №1:

Итак, ваш код пытается получить доступ к нулевому указателю здесь:

 05-09 21:19:10.405: ERROR/AndroidRuntime(11437): java.lang.NullPointerException
05-09 21:19:10.405: ERROR/AndroidRuntime(11437):     at www.hotapp.com.thepatch.html.ThePatch.onOptionsItemSelected(ThePatch.java:237)
  

Исправьте это.

Комментарии:

1. Я не совсем уверен, что я там исправляю.

2. Вы пытаетесь разыменовать нулевую переменную. Если это код для строки 237, который вы цитируете, очевидная интерпретация заключается в том, что ваша переменная mBitmap равна null.

3. В моем приложении есть два разных растровых изображения. Может ли это мешать?

4. Неважно, я вынул второе растровое изображение и просто сохранил одно. это работает идеально. Спасибо за вашу помощь.