Bild offenbar zu groß um geladen zu werden?

Robokopp

Bekanntes Mitglied
Hallo,

ich hab schon in einem anderen Thread gefragt, wie man unter Android am geschicktesten Bilder läd.
Das hat sich jetzt offenbar erledigt, denn ich habe versucht, das Standart Applogo von Android zu laden mit
Bitmap _scratch = BitmapFactory.decodeResource(getResources(),R.Drawable.....)

Das funktioniert tadellos.Aber sobald ich versuche, meine eigenen Png´s zu laden, gibt es eine NullpointerException(warum auch immer??), obwohl die bilder im selben Ordner wie das Applogo liegen.

Kann es sein dass die Bilder einfach zu groß sind um als Bitmap geladen zu werden?Aber warum dann die Nullpointer?
 
G

Gast2

Gast
Das File liegt ja offensichtlich im Resource-Verzeichnis. Auch im richtigen?

res/drawable-mdpi/my_icon.png // bitmap for medium density
res/drawable-hdpi/my_icon.png // bitmap for high density
res/drawable-xhdpi/my_icon.png // bitmap for extra high density

Siehe hier
 

Robokopp

Bekanntes Mitglied
Die Files haben alle die selbe Größe und liegen im hdpi Ordner.
Mittlerweile schaffe ich es, das 1 Bild geladen werden kann. Sobald ich mehrere lade, kommt wieder der Fehler
 
S

SlaterB

Gast
konzentriert auf
> Aber warum dann die Nullpointer?

wenn ein Bild nicht geladen werden kann oder sonst eine Aktion auf der Welt, die wie hier ein Objekt zurückgibt, scheitert,
musst du eben mit den drei in der Computer-Natur vorgesehenen Möglichkeiten rechnen:
- einer Exception,
- Rückgabe eines kaputten Objektes
- oder eben Rückgabe von null
(Zusatz mag noch Beschändigung des Restprogramms/ sonstigen Speichers sein, so dass z.B. gar keine Bilder mehr geladen werden)
 

Robokopp

Bekanntes Mitglied
konzentriert auf
> Aber warum dann die Nullpointer?

wenn ein Bild nicht geladen werden kann oder sonst eine Aktion auf der Welt, die wie hier ein Objekt zurückgibt, scheitert,
musst du eben mit den drei in der Computer-Natur vorgesehenen Möglichkeiten rechnen:
- einer Exception,
- Rückgabe eines kaputten Objektes
- oder eben Rückgabe von null
(Zusatz mag noch Beschändigung des Restprogramms/ sonstigen Speichers sein, so dass z.B. gar keine Bilder mehr geladen werden)

Okay. Dann verstehe ich dennoch nicht warum die Bilder nicht geladen werden können.
Sie sind alle vorhanden.
Gestern hab ich es sogar einmal geschafft, dass zwei bilder gleichzeitig geladen wurden. Manchmal stürzt die App ab, ein anderes mal dann wieder nicht.

Ein try{} finalize{} würde daran wahrscheinlich auch nichts ändern oder?
 
S

SlaterB

Gast
sofern du bisher keine richtigen Fehlermeldungen zu lesen bekommen hast kann sich das schon lohnen, um Exceptions oder gar Throwables zu fangen und zu loggen,
wer weiß wo du sonst Fehler nicht ausgibst und die NullPointerException erst ganz woanders auftritt

was genau bei den Bildern passiert kann ich persönlich nicht sagen,
ist das 'Standart Applogo' auch ein PNG? ähnliche Größe? kannst du das 3x gleichzeitig laden (evtl. auf 3 Dateien kopiert)?
wenn du das mit einem Bildprogramm öffnest und einen Pixel änderst und 3x abspeicherst, geht es dann noch?
auch bei mehreren Änderungen bis hin zu deinem Bild, wann kommt der Fehler?
 

Robokopp

Bekanntes Mitglied
sofern du bisher keine richtigen Fehlermeldungen zu lesen bekommen hast kann sich das schon lohnen, um Exceptions oder gar Throwables zu fangen und zu loggen,
wer weiß wo du sonst Fehler nicht ausgibst und die NullPointerException erst ganz woanders auftritt

was genau bei den Bildern passiert kann ich persönlich nicht sagen,
ist das 'Standart Applogo' auch ein PNG? ähnliche Größe? kannst du das 3x gleichzeitig laden (evtl. auf 3 Dateien kopiert)?
wenn du das mit einem Bildprogramm öffnest und einen Pixel änderst und 3x abspeicherst, geht es dann noch?
auch bei mehreren Änderungen bis hin zu deinem Bild, wann kommt der Fehler?
Ich hab weitestgehend png´s. die Jpg´s funktionieren nach meiner Erfahrung garnicht, weswegen ich die auch immer weglasse.
Ich hab hier mal die aktuelle Logausgabe:

Java:
04-12 13:43:29.135: E/AndroidRuntime(28398): FATAL EXCEPTION: main
04-12 13:43:29.135: E/AndroidRuntime(28398): java.lang.NullPointerException
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at de.android.slicytowermobilelevelsystem.GameActivity.onDraw(GameActivity.java:163)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.View.draw(View.java:6933)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.View.draw(View.java:6936)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.widget.FrameLayout.draw(FrameLayout.java:357)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.View.draw(View.java:6936)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.widget.FrameLayout.draw(FrameLayout.java:357)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1917)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.ViewRoot.draw(ViewRoot.java:1530)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.ViewRoot.performTraversals(ViewRoot.java:1266)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.view.ViewRoot.handleMessage(ViewRoot.java:1868)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.os.Looper.loop(Looper.java:130)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at android.app.ActivityThread.main(ActivityThread.java:3691)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at java.lang.reflect.Method.invokeNative(Native Method)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at java.lang.reflect.Method.invoke(Method.java:507)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
04-12 13:43:29.135: E/AndroidRuntime(28398): 	at dalvik.system.NativeStart.main(Native Method)


Ich hab hier nochmal einen Ausschnitt aus der Block-Klasse.
Ich übergebe beim Erstellen der Blöcke über den Konstruktor die Bitmap:
In der Mainklasse wird dann jedes Objekt gezeichnet, genau wie bei Quaxi´s Tutorial
Java:
	public class Block extends Sprite {
	
	private Bitmap bitmap=null;



	public Block(int id, double x, double y, int width, int height, Bitmap scratch) {
		super(id, x, y, width, height, scratch);
		matrix = new Matrix();
		matrix.postScale(width, height);
		this.bitmap = Bitmap.createScaledBitmap(scratch, width, height, true);

		modulo = id % 10;
		if (modulo == 0) {
			zufall = (int) (Math.random() * 2);

		}
	}



	@Override
	public void onDraw(Canvas canvas){

		canvas.drawBitmap(bitmap, (int)this.getX(), (int)this.getY(), null);
		
		
	}

Ich dachte mir halt, dass er eventuell versucht zu zeichnen oder die Logik auszuführen, bevor die Bilder geladen wurden und die Blöcke erstellt wurden, aber das ist erst der Fall, sobald alles geladen wurde..
 
G

Gast2

Gast
Gut, war nur so eine Idee, da in R.java alle Resource-Namen in Variablen-Namen verwendet werden, was entsprechende Konventionen mit sich bringt, was aber wiederum zugegebenermaßen dann eher zu einer Compiler-Exception geführt hätte.

Zu dem Beispiel: Kann es sein, dass Du den Konstruktor der Super-Klasse aufrufst?
 

Robokopp

Bekanntes Mitglied
Gut, war nur so eine Idee, da in R.java alle Resource-Namen in Variablen-Namen verwendet werden, was entsprechende Konventionen mit sich bringt, was aber wiederum zugegebenermaßen dann eher zu einer Compiler-Exception geführt hätte.

Zu dem Beispiel: Kann es sein, dass Du den Konstruktor der Super-Klasse aufrufst?


Der Konstruktor wird so aufgerufen wie er da steht. Weiß nicht so recht auf was du hinaus willst
 

Robokopp

Bekanntes Mitglied
Ich meine damit die Instanziierung von Block.

Das war es auf jeden Fall nicht, hab den Fehler nun gefunden, aber das müsst ihr mir erklären, weil er hat absolut nichts mit den Bildern zu tun :D

und zwar ist es so, dass ich ein Scoreboard hab, welches daran Schuld war:

Java:
	@Override
	protected void onDraw(Canvas canvas) {

		if (!paused&&created) {

			canvas.drawColor(Color.LTGRAY);
			for (ListIterator<Sprite> it = blocks.listIterator(); it.hasNext();) {
				Sprite r = it.next();
				if (r.getY() > -blockheight * 2
						&& r.getY() < displayH + blockheight * 5) {
					if(!r.isRemoveable()){
						r.onDraw(canvas);	
					}
				}

			}

			for (ListIterator<Sprite> it = players.listIterator(); it.hasNext();) {
				Sprite r = it.next();
				r.onDraw(canvas);
			}
			
			
		}
//		scoreboard.onDraw(canvas);
		invalidate();

	}
Wie man sieht, bleibt es unbeeinflusst durch die Booleans paused und created, wird also direkt beim Start gezeichnet.
Jedoch enthält es keine Bilder, sondern eben nur Werte.

Ach man, jetzt bin ich glücklich :D
Hab grad mal alle Bilder auf einmal geladen - funzt ;)
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Habe ein svg bild, kann ich das zu svg koordinaten umrechnen, damit ich den Umriss zeichnen kann? Wenn ja wie? Allgemeine Java-Themen 1
berserkerdq2 Wenn ich einfach eine GIF in den Scenebuilder als Bild reinpacke, wird das dann asl Gif angezeigt Allgemeine Java-Themen 1
OnDemand Prüfen ob Bild defekt ist Allgemeine Java-Themen 4
Y Bild in JPanel setzen Allgemeine Java-Themen 2
Kirby.exe Bild im Zentrum spiegeln Allgemeine Java-Themen 14
I Apache POI Bild in Word ersetzen Allgemeine Java-Themen 15
OnDemand Bild prüfen ob defekt Allgemeine Java-Themen 3
L Input/Output Kassenzettel lesen aus einem Bild Allgemeine Java-Themen 2
K Bild in einem anderen Bild suchen Allgemeine Java-Themen 12
R Compiler-Fehler Bild per E-Mail versenden Allgemeine Java-Themen 3
M Java- Bild gewissen Anzahl von Sekunden anzeigen?! Allgemeine Java-Themen 4
RalleYTN 2D-Grafik Bild mit bilinearer Interpolation skalieren Allgemeine Java-Themen 31
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
S Telefonbuch mit Bild Allgemeine Java-Themen 4
A 2D-Grafik Text in ein Bild schreiben Allgemeine Java-Themen 11
Tacofan GIF-Bild wird "zerstört" Allgemeine Java-Themen 3
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
T Neuen Kanal in Bild (TIFF) einfügen à la Photoshop Allgemeine Java-Themen 2
Z Zahlen aus Bild auslesen Allgemeine Java-Themen 1
X Bild -> lokale Variable -> DB -> lokale Variable Allgemeine Java-Themen 3
E 3D Objekte in 2D Bild finden Allgemeine Java-Themen 5
R HtmlUnit: Canvas als Bild speichern Allgemeine Java-Themen 0
E am häufigsten vorkommenden Farben aus einem Bild Allgemeine Java-Themen 5
S Bild in Raster Allgemeine Java-Themen 1
S Bild in Frame Allgemeine Java-Themen 0
F Punkte in einem Bild finden Allgemeine Java-Themen 10
A Bild aufteilen für getData Allgemeine Java-Themen 3
P Wie füge ich ein Bild in die GUI ein? Allgemeine Java-Themen 7
F ImageJ: Linien und Schnittpunkte in Bild Allgemeine Java-Themen 1
A mit getClassLoader Bild laden Allgemeine Java-Themen 8
E Bild abspeichern Allgemeine Java-Themen 5
D Face.com - Gesicht im Bild finden Allgemeine Java-Themen 3
N Input/Output Bild von WebSite laden? Allgemeine Java-Themen 3
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
S programm um bild auszulesen Allgemeine Java-Themen 2
K Quadrat in einem Bild erkennen Allgemeine Java-Themen 33
B Bild verschieben Allgemeine Java-Themen 6
T Bild in jar Paket einbinden Allgemeine Java-Themen 9
D Bild Typ bestimmen Allgemeine Java-Themen 9
0 2D-Grafik Bild einfärben Allgemeine Java-Themen 8
A Bild zusammenbauen! Allgemeine Java-Themen 5
A Bild von Webcam aufzeichnen Allgemeine Java-Themen 14
V 2D-Grafik Bild transparent machen. Allgemeine Java-Themen 4
H Bild einscannen und speichern Allgemeine Java-Themen 29
E Bild mit Listener einfügen Allgemeine Java-Themen 3
B Bild in String einbauen? Allgemeine Java-Themen 3
C Bild auf HDD speichern Allgemeine Java-Themen 4
X Bild aus dem Netz von URL runterladen und in GUI einbinden. Allgemeine Java-Themen 3
F Bild (Point) mit scrollen lassen Allgemeine Java-Themen 5
R Texterkennung - Text aus einem/r Bild/Grafik auslesen Allgemeine Java-Themen 2
B Bild- und Texterkennung Allgemeine Java-Themen 4
S Tracing eines Bildes (a.ka. Bild vektorisieren)..? Allgemeine Java-Themen 2
destroflyer *.dds-Bild anzeigen Allgemeine Java-Themen 12
F Bild aus externer Quelle laden und Skalieren? Allgemeine Java-Themen 11
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
R JAI - RGB Bild in 3 Einzelbilder zerlegen Allgemeine Java-Themen 4
P Ascii Bild aus einem input file nur kommt nix im outputfile an?????? Allgemeine Java-Themen 5
A Möglichkeiten, ein Bild schnell auszuwerten Allgemeine Java-Themen 56
D Java Thread, Bild wird nur am Ende gezeichnet Allgemeine Java-Themen 5
K Zeichnen auf ein Bild und Scrollen Allgemeine Java-Themen 7
data89 Barcodes in Bild erkennen Allgemeine Java-Themen 17
S Bild anhand von Koordinaten einteilen Allgemeine Java-Themen 7
K Transparente Bilder in Bild positionieren und speichern. Allgemeine Java-Themen 5
W Bild Spiegeln, aber Originalbild ausblenden Allgemeine Java-Themen 2
B Bild wird nicht angezeigt. Allgemeine Java-Themen 10
Developer_X Avatar/Bild ins Profil einbinden Allgemeine Java-Themen 10
C Bild in .txt speichern und wieder als Bild speichern Allgemeine Java-Themen 2
D Bild in text tabelle umwandeln Allgemeine Java-Themen 2
G bild in package Allgemeine Java-Themen 6
MQue bild zoomen Allgemeine Java-Themen 2
R Farbe im Bild ersetzen Allgemeine Java-Themen 11
R PDF einlesen und als Bild abspeichern Allgemeine Java-Themen 8
P Bild aus dem Internet speichern Allgemeine Java-Themen 4
K Schreiben von Bildern: Bild bleibt leer Allgemeine Java-Themen 7
ARadauer Bild verkleinern. Allgemeine Java-Themen 9
F Bild (File) komplett serialisieren Allgemeine Java-Themen 9
H Wie erstelle ich ein Bild ( GeoTIFF ) ? Allgemeine Java-Themen 2
Ark Bild immer als ARGB laden Allgemeine Java-Themen 2
N Hochgeladenes Bild verkleinern und speichern Allgemeine Java-Themen 2
N Graphics2D als Bild abspeichern Allgemeine Java-Themen 6
M bild verkleinern Allgemeine Java-Themen 9
MQue svg- Bild Allgemeine Java-Themen 34
S JPEG Bild übertragen mit RMI ? Allgemeine Java-Themen 4
V Wie kann ich ein Bild in einem Zip Archiv abspeichern? Allgemeine Java-Themen 3
ToNyXXL Als Mauszeiger eigenes Bild verwenden! Allgemeine Java-Themen 3
M bild erkennung Allgemeine Java-Themen 2
S Bild durchs Label laufen Allgemeine Java-Themen 14
T Bild verliert Inhalt. Allgemeine Java-Themen 6
T Icon -> Bild einladen Allgemeine Java-Themen 18
G Bild neu zeichnen Allgemeine Java-Themen 13
S Bild Größe verändern Allgemeine Java-Themen 2
R Bild flackert nach Java-Install - nur bei Laufschriften. Allgemeine Java-Themen 2
H Bild base64encode als String Allgemeine Java-Themen 9
S Bild aus Zwischenablage in Applet einfügen Allgemeine Java-Themen 2
T Ich bin unfähig ein Bild relativ zu addressieren ... Allgemeine Java-Themen 12
D JPEGEncoder -> Schwarz Weiß Bild Allgemeine Java-Themen 2
M Eingelesene Bild wird automatisch skaliert Allgemeine Java-Themen 4
R Bild wird trotz allem einfach nicht angezeigt. - AHHHHH!!!!! Allgemeine Java-Themen 30
R Bild downloaden und darstellen lassen Allgemeine Java-Themen 5
R Bild downloaden und dann Applet ausfüllen Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben