bmp dateien auf 4 byte grenzen testen...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

x_to

Betreff: bmp dateien auf 4 byte grenzen testen...

BeitragSa, Okt 31, 2009 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
so..jetzt stehe ich vor dem problem daß ich damals nie in mathe aufgepasst habe.

aus dem header einer bmp datei lese ich die breite der bitmap, allerdings müssen die zeilen deer bmp datei immer auf 4byte längen enden...

wie teste ich das aber wann ich auf einem vielfachen eines 4 bytes ende ???

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Nov 01, 2009 1:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Siehe dazu Mod
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

x_to

BeitragSo, Nov 01, 2009 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
danke...hätte ich auch selber drauf kommen können... Rolling Eyes

BlitzBasic: [AUSKLAPPEN]

Function byte_fill(bmp_width)
value = 4 - (bmp_width Mod 4)
If value = 4 Then test = 0
Return value
End Function


oder gibt es eine andere elegantere lösung ???

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Nov 01, 2009 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst natürlich gleich gegen 0 prüfen. Dann sparst du dir die value=4 vor dem Mod.

Außerdem ist test bei dir nicht deffiniert. Oder ist sie Global?

Wenn man also nur wissen möchte ob eine Zahl ein vielfaches von 4 hat, dann siehe mal folgenden Code: [AUSKLAPPEN]
For q=0 To 22
   Print q+" "+(q Mod 4)
Next

WaitKey
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

x_to

BeitragSo, Nov 01, 2009 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
die funktion soll die anzahl bytes zurückgeben womit eine zeile eines bmp "aufgefüllt" werden muß, damit sie ein vielfaches von 4 ist.
das test war ein fehler meinerseits...
hier das richtige:


BlitzBasic: [AUSKLAPPEN]

Function byte_fill(bmp_width)
value = 4 - (bmp_width Mod 4)
If value = 4 Then value = 0
Return value
End Function

FireballFlame

BeitragSo, Nov 01, 2009 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Was hectic dir mit
hectic hat Folgendes geschrieben:
Du kannst natürlich gleich gegen 0 prüfen. Dann sparst du dir die value=4 vor dem Mod.
sagen wollte, ist:

Du kannst auch einfach BlitzBasic: [AUSKLAPPEN]
Function byte_fill(bmp_width) 
Return bmp_width Mod 4
End Function
schreiben Wink
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit
 

x_to

BeitragSo, Nov 01, 2009 20:55
Antworten mit Zitat
Benutzer-Profile anzeigen
is korrekt...aber mit der funktion wollte ich eigentlich den wert geliefert bekommen wieviel bytes nötig sin (oder verwendet wurden) um eine 4byte zu erreichen...Wink

z.b.:

640 MOD 4 ergibt 0
641 MOD 4 aber 1, obwohl 3 bytes benötigt werden um es zur 4byte grenze zu bringen..Wink

trotzdem danke für eure hilfe...eine frage hätte ich noch:

Wieso werden zeilen immer bis zur 4 byte grenze geschrieben und warum sind BMPs horizontal "gespiegelt" abgespeichert ???

hat das nen grund ???

hazumu-kun

BeitragSo, Nov 01, 2009 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Historische entwicklung des Formats, bescheuerte Sache.

Also um zu wissen wieviel du füllen musst machst du folgendes:

BlitzBasic: [AUSKLAPPEN]

Function Byte_Fill (value)
Return ((4-(value Mod 4)) Mod 4)
End Function
Warum kann es keine omnipotente Macht geben?
Weil diese omnipotente Macht in der Lage sein müsste, einen so schweren Stein zu schaffen, dass sie ihn nicht heben kann
-> nicht omnipotent

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group