Enregistrer le fichier bitmap dans la fonction de fichier

J'essaie d'enregistrer un bitmap pour le fichier et un spécifique directement en utilisant une fonction que j'ai créée. Ça ne fonctionne pas. Il se bloque après la partie bitmap.compress (avant here3).

File dir = new File(filepath); if(!dir.exists())dir.mkdirs(); File file = new File(Environment.getExternalStorageDirectory() + filepath, side + ".png"); FileOutputStream fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.PNG, 85, fOut); fOut.flush(); fOut.close(); System.out.println(filepath); bitmap.recycle(); System.gc(); 

Journal d'erreurs:

  • Service Android
  • Comment faire pour itérer via SparseArray?
  • GCM defaultSenderID
  • FirebaseApp avec le nom n'existe pas
  • Obtenez un simple objet json en utilisant la rétrofit 2
  • Impossible d'exécuter le programme "\ ndk-build.cmd": le lancement a échoué
  •  06-29 00:16:38.089: D/AndroidRuntime(3260): Shutting down VM 06-29 00:16:38.089: W/dalvikvm(3260): threadid=1: thread exiting with uncaught exception (group=0xb587f4f0) 06-29 00:16:38.089: E/AndroidRuntime(3260): FATAL EXCEPTION: main 06-29 00:16:38.089: E/AndroidRuntime(3260): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=android.intent.action.VIEW dat=content://org.openintents.filemanager/mimetype//mnt/sdcard/download/02977_awreckedboatintheocean_1280x1024.jpg }} to activity {com.polygonattraction.testbirds/com.polygonattraction.testbirds.functions.SelectImageSource}: java.lang.IllegalStateException: Can't compress a recycled bitmap 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.app.ActivityThread.deliverResults(ActivityThread.java:2532) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2574) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.app.ActivityThread.access$2000(ActivityThread.java:117) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:961) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.os.Handler.dispatchMessage(Handler.java:99) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.os.Looper.loop(Looper.java:130) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.app.ActivityThread.main(ActivityThread.java:3683) 06-29 00:16:38.089: E/AndroidRuntime(3260): at java.lang.reflect.Method.invokeNative(Native Method) 06-29 00:16:38.089: E/AndroidRuntime(3260): at java.lang.reflect.Method.invoke(Method.java:507) 06-29 00:16:38.089: E/AndroidRuntime(3260): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 06-29 00:16:38.089: E/AndroidRuntime(3260): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 06-29 00:16:38.089: E/AndroidRuntime(3260): at dalvik.system.NativeStart.main(Native Method) 06-29 00:16:38.089: E/AndroidRuntime(3260): Caused by: java.lang.IllegalStateException: Can't compress a recycled bitmap 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.graphics.Bitmap.checkRecycled(Bitmap.java:180) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.graphics.Bitmap.compress(Bitmap.java:581) 06-29 00:16:38.089: E/AndroidRuntime(3260): at com.polygonattraction.testbirds.functions.Functions.SaveToFile(Functions.java:144) 06-29 00:16:38.089: E/AndroidRuntime(3260): at com.polygonattraction.testbirds.functions.SelectImageSource.onActivityResult(SelectImageSource.java:113) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.app.Activity.dispatchActivityResult(Activity.java:3908) 06-29 00:16:38.089: E/AndroidRuntime(3260): at android.app.ActivityThread.deliverResults(ActivityThread.java:2528) 

  • Voir le contenu entier de ScrollView dans la mise en page graphique d'Eclipse
  • Problèmes d'activité OnPause / onResume
  • Connectivité Internet Android, vérifiez une meilleure méthode
  • Quelle est la meilleure manière dans Android de supprimer toutes les lignes d'une table
  • L'installation d'Android SDK ne trouve pas JDK
  • Utilisez RxJava et Retrofit pour itérer à travers la liste et augmenter les résultats en fonction des sous-requêtes
  • 3 Solutions collect form web for “Enregistrer le fichier bitmap dans la fonction de fichier”

    1. Vous avez besoin d'une autorisation appropriée dans manifest.xml :

       <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    2. out.flush() check out null ..

    3.  String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/PhysicsSketchpad"; File dir = new File(file_path); if(!dir.exists()) dir.mkdirs(); File file = new File(dir, "sketchpad" + pad.t_id + ".png"); FileOutputStream fOut = new FileOutputStream(file); bmp.compress(Bitmap.CompressFormat.PNG, 85, fOut); fOut.flush(); fOut.close(); 

    Je pense que c'est une réponse beaucoup mieux.

    Deux exemples fonctionnent pour moi, pour votre référence.

     Bitmap bitmap = Utils.decodeBase64(base64); try{ File file = new File(filePath); FileOutputStream fOut = new FileOutputStream(file); bitmap.compress(Bitmap.CompressFormat.PNG, 85, fOut); fOut.flush(); fOut.close();} catch (Exception e) { e.printStackTrace(); LOG.i(null, "Save file error!"); return false; } 

    et celui-là

      Bitmap savePic = Utils.decodeBase64(base64); File file = new File(filePath); File path = new File(file.getParent()); if (savePic != null) { try { // build directory if (file.getParent() != null && !path.isDirectory()) { path.mkdirs(); } // output image to file FileOutputStream fos = new FileOutputStream(filePath); savePic.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.close(); ret = true; } catch (Exception e) { e.printStackTrace(); } } else { LOG.i(TAG, "savePicture image parsing error"); } 

    Je pense que c'est une réponse beaucoup mieux.

    Voici la fonction qui vous aide

     private void saveBitmap(Bitmap bitmap,String path){ if(bitmap!=null){ try { FileOutputStream outputStream = null; try { outputStream = new FileOutputStream(path); //here is set your file path where you want to save or also here you can set file object directly bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream); // bitmap is your Bitmap instance, if you want to compress it you can compress reduce percentage // PNG is a lossless format, the compression factor (100) is ignored } catch (Exception e) { e.printStackTrace(); } finally { try { if (outputStream != null) { outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } catch (Exception e) { e.printStackTrace(); } } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.