2012-05-28 3 views
0

Je travaille sur une application qui va stocker une toile dessinée en tant qu'image jpeg sur une carte SD. La question est quand j'ai essayé de voir l'image enregistrée il est en charge pour beaucoup de temps que d'autres images que je veux l'image enregistrée à visualiser en temps normal, comme d'autres images Mon code pour l'enregistrement d'une image est:jpeg visualisé plus tard

  View content = drawView; 
      content.setDrawingCacheEnabled(true); 
      content.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); 
      Bitmap bitmap = content.getDrawingCache(); 

      String path = Environment.getExternalStorageDirectory().getAbsolutePath(); 
      String file_name="Imatge"+System.currentTimeMillis()+".jpg"; 
      File file = new File(path,file_name); 
      FileOutputStream ostream; 
      try {     
       ostream = new FileOutputStream(file); 
       bitmap.compress(CompressFormat.PNG,50, ostream); 
       ostream.flush(); 
       ostream.close(); 
       Toast.makeText(getApplicationContext(), " :) Image saved in "+ path+"/"+file_name, 5000).show(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       Toast.makeText(getApplicationContext(), e.toString()+"error", 5000).show(); 
      } 
       } 

Merci d'avance s'il vous plaît aidez-moi !!!!

+0

Que voulez-vous dire par ce chargement pour le lot de temps que d'autres images? –

+0

fotos prises dans Android mobile sont visualisés dans la galerie en temps normal mais l'image créée par mon application prend beaucoup de temps pour voir l'image dans la galerie ne sais pas pourquoi –

+0

avez-vous vérifié la taille du fichier de votre image? Peut-être que c'est trop grand pour charger –

Répondre

0

je me trouve la solution, la solution est de stocker l'image à travers magasin de médias est mon code ici qui fonctionne correctement

View content = drawView; 
       content.setDrawingCacheEnabled(true); 
       content.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_AUTO); 
       Bitmap bitmap; 
       bitmap = content.getDrawingCache();    
       String file_name="MyImage"+System.currentTimeMillis()+".jpg"; 

       ContentValues values = new ContentValues(); 
       values.put(Images.Media.TITLE,"MyImage");     
       values.put(Images.Media.DESCRIPTION,"Advanced Practice");     
       values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
       Uri url = null; 

       try 
       { 
        url = getContentResolver().insert(MediaStore.Images.Thumbnails.getContentUri("external"), values); 
        MediaStore.Images.Media.insertImage(getContentResolver(), bitmap,"MyImage","Advanced Practice");      
        Toast.makeText(getApplicationContext(), " :) Image saved in /sdcard/DCIM/Camera/"+file_name, 5000).show(); 
       } 
       catch (Exception e) 
       { 
        e.printStackTrace(); 
        Toast.makeText(getApplicationContext(), e.toString()+"error", 5000).show(); 
       } 
0

Votre code enregistre l'image en tant que fichier PNG (même si vous lui attribuez l'extension de fichier .jpg). Les fichiers PNG sont sans perte et donc beaucoup plus volumineux que les fichiers JPEG.

Pour résoudre ce problème, enregistrez-le au format JPEG:

ostream = new FileOutputStream(file); 
bitmap.compress(CompressFormat.JPEG, 50, ostream); 
+0

désolé ne fonctionne pas il prend également beaucoup de temps pour voir l'image enregistrée dans la carte SD –

+0

@ThiruVT: Pouvez-vous nous donner quelques chiffres. Quelle est la taille de l'image enregistrée et quelle est la taille des autres images (en termes de Ko/Mo sur le SD et en termes de largeur et de hauteur)? Et combien de temps prend votre image pour charger et combien de temps les autres images prennent-elles à charger? – Codo

+0

la taille de l'image n'est pas grande même sa taille est de 5 ko seulement cette image prend 15sec à 20sec pour charger l'image normale prendre 2 3 secondes seulement –

0

utilisation comme indiqué ci-dessous

 String extStorageDirectory = Environment.getExternalStorageDirectory().toString(); 
        FileOutputStream out = null; 
        Log.e("h",""+mview.getMeasuredHeight()+" "+mview.getMeasuredWidth()); 
        try { 
         out = new FileOutputStream(new File(extStorageDirectory + "/myAwesomeDrawing.jpg")); 
         mBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
         out.flush(); 
         out.close(); 
        } catch (Exception e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

mBitmap est variable Gloabal que u ont utilisé dans ur drawView classe si par en utilisant ce que vous devez ignorer cette ligne menas commenter dans ce lignes

/*View content = drawView; 
    content.setDrawingCacheEnabled(true); 
     content.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); 
     Bitmap bitmap = content.getDrawingCache(); 
*/ 

peut il fonctionne

+0

il travaille plutôt prendre plus temps que la normale –

Questions connexes