2010-12-03 41 views
0

Dans mon projet j'ai une image que par le biais du programme, j'ai extrait les pixels, manipuler ces pixels et ensuite enregistré dans mon paquet. La façon dont je l'ai enregistré, est:Android: problème dans l'image bitmap de décodage

private void createPicture() 
{ 
    System.out.println("Inside createPicture"); 
    System.out.println(contextPath); 
    try{ 
     FileOutputStream fos = new FileOutputStream(contextPath + "/" + picName); 
     DataOutputStream dos = new DataOutputStream(fos); 

     for(int i=0; i<splitedPixel.length; i++) 
      dos.writeByte(splitedPixel[i]); 

     dos.flush(); 
     dos.close(); 
    } 
    catch(IOException e){ 
     System.out.println("IOException : " + e); 
    } 
    System.out.println("Picture Created."); 
} 

donc, il enregistre mon image dans ce répertoire

/data/data/my_package_name/files/myPic.bmp

maintenant , Je veux lire cette nouvelle image et extraire des pixels de cette image. J'ai utilisé cette méthode:

public Stego(Context context) 
{ 
    //Instantiate an ImageView and define its properties 
    contextPath = context.getFilesDir().getAbsolutePath(); 
    image = BitmapFactory.decodeFile(contextPath + "/" + picName); 

    System.out.println("Image= " + image); 
    imWidth = image.getWidth(); 
    imHeight = image.getHeight(); 
    getMaxMessageChars(); 
    System.out.println("Width: " + imWidth); 
} 

Le programme se bloque ici. logcat indique que le résultat de l'image est null et que le programme atteint les crash de getWidth.

sont ces façons d'écrire et de lire correctement? Puis-je accéder au répertoire via l'émulateur pour vérifier si cette image est créée ou non?

Merci

Répondre

0

Je pense que vous devriez fermer un flux fos dans la méthode createPicture().

BitmapFactory.decode*() méthodes retournent null en cas d'erreur. Il est donc préférable de vérifier null après le décodage. Pour autant que je sache, vous pouvez enregistrer un fichier à partir du stockage interne Android uniquement sur un émulateur ou un appareil enraciné. Cela peut être fait en utilisant DDMS Perspective d'Eclipse ou l'utilitaire ddms à partir de la chaîne d'outils Android SDK. Cliquez simplement sur Device-> File Explorer et tirez vos fichiers depuis un périphérique.

Si vous souhaitez obtenir un fichier à partir d'un périphérique non rooté, il est préférable de l'enregistrer dans le stockage externe (sdcard). Dans ce cas, vous pouvez connecter votre appareil à un ordinateur comme un disque dur externe.