Bitmap Dimensionen / Größe

  • 9 Antworten
  • Neuester Beitrag
Diskutiere Bitmap Dimensionen / Größe im Android App Entwicklung im Bereich Betriebssysteme & Apps.
E

einspunktnull

Neues Mitglied
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?
 
v Ralle v

v Ralle v

Stammgast
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
 
E

einspunktnull

Neues Mitglied
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.TAG, bRefWidth+" "+bRefHeight);
    }
 
v Ralle v

v Ralle v

Stammgast
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?
 
E

einspunktnull

Neues Mitglied
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.
 
v Ralle v

v Ralle v

Stammgast
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:
E

einspunktnull

Neues Mitglied
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.
 
v Ralle v

v Ralle v

Stammgast
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?
 
W

wilco

Fortgeschrittenes Mitglied
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.
 
E

einspunktnull

Neues Mitglied
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:

Pre-scaling and auto-scaling of bitmaps and nine-patches

When a bitmap or nine-patch image is loaded from the application's resources, the platform attempts to pre-scale it to match the display's density. For instance, if you placed a 100x100 icon in the res/drawable/ directory and loaded that icon as a bitmap on a high-density screen, Android would automatically scale up the icon and produce a 150x150 bitmap.
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.