1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Bitmap Dimensionen / Größe

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von einspunktnull, 22.02.2011.

  1. einspunktnull, 22.02.2011 #1
    einspunktnull

    einspunktnull Threadstarter Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    21.02.2011
    Hallo,

    Wie kann ich die tatsächliche Pixel-Auflösung einer Bitmap ermitteln?
    Die Funktionen Bitmap.getWidth() und Bitmap.getHeight() geben mir andere Werte zurück als die, die das Bild wirklich hat. Das Bild hat eine Auflösung von 452x703 und Die genannten Funktionen sagen 678x1055. Ist mir da irgendwas entgangen? Woran liegt das?
     
  2. v Ralle v, 22.02.2011 #2
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Ich vermute, dir ist etwas entgangen ;) Da du keinen Code postest, kann man ja nur raten. Außerdem ist das Seitenverhältnis der Maße gleich, was nochmal meine These unterstützt.

    Grüße
     
  3. einspunktnull, 22.02.2011 #3
    einspunktnull

    einspunktnull Threadstarter Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    21.02.2011
    Du hast recht, das Verhältnis ist gleich. Aber das nützt mir nur wenig, da ich bestimmte Pixelpositionen in nem Array festlegen möchte. Als Referenz verwende ich eben jenes Bild und hier habe ich die verschiedenen Pixelpositionen in Bezug auf die tatsächliche Größe.

    mein Code, welcher mir die 678x1055 ausspuckt:

    PHP:
    private final Bitmap B_RES_BMP BitmapFactory.decodeResource(getResources(), R.drawable.board);
       
        public 
    BoardView(Context context)
        {
            
    super(context);
            
    bRefWidth B_RES_BMP.getWidth();
            
    bRefHeight B_RES_BMP.getHeight();
            
    Log.d(MiniLogi.TAGbRefWidth+" "+bRefHeight);
        }
     
  4. v Ralle v, 22.02.2011 #4
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Also ich habe den gleichen Code bei mir jetzt probiert und er funktioniert!

    Verwechselst du vielleicht das Bild? Oder hast du mehrere Ordner mit hdpi, mdpi und ldpi eingerichtet? Gleiches gilt für die Layouts. Liegt da vielleicht der Fehler?
     
  5. einspunktnull, 22.02.2011 #5
    einspunktnull

    einspunktnull Threadstarter Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    21.02.2011
    Ich hab keine Ahnung was hier los is. ich hab jetzt nochma ne zweite grafik hinzugefügt - selber code - logcat sagt 171x173 anstelle von original 114x115.

    irgendwelche formatspezifischen drawable-ordner hab ich keine. nur nen einfachen drawable-ordner.

    auf meiner Suche nach der Ursache hab ich im Netz nichts gefunden.
     
  6. v Ralle v, 22.02.2011 #6
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Ohne jetzt Werbung machen zu wollen: probier bitte mal die Grafik im Anhang und sag, was da passiert.

    Edit: und sag mir mal bitte noch, wie du testest. Auf einem Android Gerät oder im Emulator?
     

    Anhänge:

    Zuletzt bearbeitet: 22.02.2011
  7. einspunktnull, 22.02.2011 #7
    einspunktnull

    einspunktnull Threadstarter Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    21.02.2011
    Also, deine Grafik ist 480x480 im original. ich hab diese datei soeben in meinen eclipse in den drawable-ordner gezogen und im code auf diese resource referenziert. logcat meldet 720x720. ich versteh das nicht. für mich gibt es keine logische erklärung.
     
  8. v Ralle v, 22.02.2011 #8
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Ich kann es mir nur noch an der Auflösung selber erklären. Erstell mal die drei Ordner drawable-hdpi, drawable-ldpi, drawable-mdpi. Pack in jeden Ordner das gleiche Bild und teste nochmal.

    Von vorhin noch die Frage: worauf testest du? Emulator oder Device? Welche Auflösung hast du und wie viele dpi?
     
    einspunktnull bedankt sich.
  9. wilco, 23.02.2011 #9
    wilco

    wilco Android-Hilfe.de Mitglied

    Beiträge:
    106
    Erhaltene Danke:
    32
    Registriert seit:
    10.08.2010
    Da wird wahrscheinlich die Android Auto-Skalierung zuschlagen, die Grafiken automatisch auf die Display-Auflösung anpasst. Wie die genau funktioniert hängt auch davon ab gegen welche Version Du kompilierst. Du kannst das alles hier nachlesen.

    Wenn Du gegen 1.6 oder höher kompilierst, pack die Grafiken doch mal in einen Ordner mit Namen drawable-nodpi, dann werden sie nicht skaliert. Allerdings funktioniert Deine Anwendung dann nicht mehr mit Android 1.5 oder niedriger.

    Generell kannst Du bei Android nicht mit fixen Pixel-Werten arbeiten. Du weisst nie im Voraus welche Auflösung das Gerät hat auf dem Deine Anwendung läuft. Da hilft alles nichts. Du musst zur Laufzeit die Display-Auflösung feststellen, alle Deine Grafiken entsprechend skalieren, und Deine fixen Pixel-Werte dann entsprechend umrechnen.
     
    einspunktnull bedankt sich.
  10. einspunktnull, 07.03.2011 #10
    einspunktnull

    einspunktnull Threadstarter Neuer Benutzer

    Beiträge:
    8
    Erhaltene Danke:
    0
    Registriert seit:
    21.02.2011
    vielen dank v_ralle_v und wilco,

    tatsächlich. ich hab die grafik mal testhalber in den drawable_hdpi-ordner gehauen und siehe da, die maße stimmten plötzlich (hab ein hdpi-gerät).
    Dann hab ich die entsprechende passage im Link von wilco gefunden:

    Quelle:Supporting Multiple Screens | Android Developers

    exakt so war es. mir war vorher schon aufgefallen, dass die Maße immer das 1.5-fache betrugen. (bei meinem gerät)

    super, die frage hat sich geklärt.
     

Diese Seite empfehlen