Create Images from File!

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von padde83, 20.09.2010.

  1. padde83, 20.09.2010 #1
    padde83

    padde83 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2010
    Hallo Zusammen ich versuche gerade Bilder von meinem Device in einer Auswahlliste darzustellen um sie anschließen nach der Selektierung auf einen Server mittels HttpPost hochzuladen.

    Dies funktioniert auch einwandfrei nur die Fehlermeldung im Log stört mich bzw. verlangsamt sie die Darstellung der Bilder in der ListView.

    In einem AsyncTask erstelle ich das Bild von dem File.
    Code:
    protected Bitmap doInBackground(File... params)
        {
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 20;
            options.outMimeType = "image/jpeg";
            Bitmap bm = BitmapFactory.decodeFile(params[0].getAbsolutePath(), options);
    
            if (bm != null)
            {
                return Bitmap.createScaledBitmap(bm, 70, 70, true);
            }
    
    Die Files bekomme ich über die Folgende Methode:
    Code:
    //start = Environment.getExternalStorageDirectory();
    private void getImageListFromDevice(File file)
        {
            if (file.isDirectory())
            {
                File fileArray[] = file.listFiles();
                for (int i = 0; i < fileArray.length; i++)
                {
                    this.getImageListFromDevice(fileArray[i]);
                }
            }
            else if (file.isFile() && !file.getParent().equals("/sdcard")) //$NON-NLS-1$
            {
                fileList.add(file);
                adapter = (UploadAdapter) listView.getAdapter();
                adapter.notifyDataSetChanged();
            }
        }
    Mein Problem ist das ich im Log mehrmals die Ausgabe bekomme:
    Code:
    D/skia    (12355): --- SkImageDecoder::Factory returned null
    D/skia    (12355): --- SkImageDecoder::Factory returned null
    D/skia    (12355): --- SkImageDecoder::Factory returned null
    D/skia    (12355): --- SkImageDecoder::Factory returned null
    D/skia    (12355): --- SkImageDecoder::Factory returned null
    D/dalvikvm(12355): GC freed 826 objects / 388344 bytes in 62ms
    D/skia    (12355): --- SkImageDecoder::Factory returned null
    D/skia    (12355): --- SkImageDecoder::Factory returned null
    
    Ich nehme an das es daran liegt das der Imagedecoder den Typ des Files nicht korrekt bestimmen kann.

    Gibt es eine Möglichkeit nur Files vom Device zu laden die den Typ image oder so haben? Oder wie könnte man diese Meldung umgehen?

    hope 4 help!

    Danke & Gruß
    padde
     
  2. padde83, 21.09.2010 #2
    padde83

    padde83 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2010
    Hat niemand Erfahrung damit.

    Evtl. gibt es ja eine elegantere Lösung die Bilder vom Handy zu laden und sie dabei zu skalieren?

    Mir fällt nur leider keiner mehr ein :sad:

    Gruß
    padde83
     
  3. Fr4gg0r, 21.09.2010 #3
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Versuchst du etwa mit der BitmapFactory Files zu laden die keine Bilder sind? :rolleyes2:

    Ich vermisse da irgendwo
    file.listFiles(new FileFilter(){
    public boolean accept(File f){
    if(f.getName().endsWith(".png")return true;
    return false;
    }
    });
     
  4. padde83, 23.09.2010 #4
    padde83

    padde83 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2010
    Servus Fr4gg0r,

    also ich habe schon eine art Filter drinne. Ich scanne nur bestimmte Ordner wie /dcim/Camera und noch 2 bestimmte Ordner von denen ich ausgehen kann das dort nur Bilder enthalten sind.

    Mein Problem war/ist das in dem Camera-Ordner auch mov-Dateien enthalten waren/sind. Deswegen der SKImageDecoder-Error. Es hat mich nur gewundert das dieser bei nur zwei Dateien ca.35 mal aufgerufen wird :sleep:

    Aktuell habe ich also wie du beschrieben hast einen Filter drinne auf die endungen der Dateien. :smile:

    Ich versuche aber davon weg zu kommen und direkt nur Dateien darzustellen die auch Bilder sind.

    Über Images.Thumbnails.EXTERNAL_CONTENT_URI komme ich auf den Speicherort der von Android abgelegten Thumbails.

    Diese hole ich mir dann über
    Code:
     String[] projection = new String[] { Images.Thumbnails.IMAGE_ID,
             Images.Thumbnails.HEIGHT,
             Images.Thumbnails.WIDTH, Images.Thumbnails.DATA,
             Images.Thumbnails.KIND };
             Cursor cur = managedQuery(images, projection,
                            Images.Thumbnails.KIND + "=" + String.valueOf(Images.Thumbnails.MINI_KIND), null, 
                            Images.Thumbnails.IMAGE_ID + " ASC");
    Über die Image_ID kann ich dann auf die Original Images zugreifen.

    Jedoch weis ich nicht ob das wirklich sinnvoll ist 2 Datenbankabfragen zu tätigen um ein Image zu bekommen.

    Gruß
    padde83
     

Diese Seite empfehlen