Seite 2 von 4
Verfasst: 28.10.2004 18:52
von freedimension
Öhm, (ohne Code angeschaut zu haben) benutzt du Byte als Datentyp? Der geht von -128 bis 127.
Verfasst: 28.10.2004 18:54
von MVXA
Hab nun herausgefunden warum der Algo nicht funktioniert, ReadByte() funktioniert nicht anständig

. es gibt nur ein byte wert bis 128 zurück, alles darüber wird als 0 ausgegeben
Verfasst: 28.10.2004 19:28
von Max.
LittleFurz hat geschrieben:Hab nun herausgefunden warum der Algo nicht funktioniert, ReadByte() funktioniert nicht anständig

. es gibt nur ein byte wert bis 128 zurück, alles darüber wird als 0 ausgegeben
Schau Dir das mal an:
a.b = 130
debug a.b
debug a.b & $FF
Verfasst: 28.10.2004 19:32
von MVXA
und was hat das mit ReadByte() zutun

?
edt.
aaaaaaaaaaahhhh.... ich begreiffs
etd2:
es funzt nun !

Danke Max ! DAAAAAAAANKE, du ahnst nicht wie dankbar ich dir bin

Verfasst: 28.10.2004 19:42
von Max.
Prima.

Verfasst: 28.10.2004 20:00
von Robert Wünsche
Also mir sagt nur ein "richtiger" komrimieralgohrhytmus zu, weil er von dir selbst kommen muss.
so ein schnick schnack kann sich jeder bauen, und auserdem ist der algo total inefektiv, dh. es brauch zu lange zum komrimieren !
Auf externe libs kann jeder zugreifen ...
Verfasst: 28.10.2004 20:06
von MVXA
dieser Code ergenzt nur ein komprimier algorythmus -_-. Und wenn dir die geschwindigkeit nicht passt, dann lösch halt die Delays raus und der Code ist dann schneller. Aber ich würde eher sagen: er ist effektiv. Halt der Code ist nur etwas buggy. Ich teste grad ne neue Version.
edt.
Ich begreiff endlich was du mit deinem Post meinst, robert

.
Nur weil ich die 2DDraw und die Image Lib nutze, heißt das doch nicht, das der code abwärtiger zu behandeln ist. ich habe doch keine lust bei jedem programm, dass ich schreibe, das rad jedes mal neu zu erfinden. Wenn du es als schnick schnack bezeichnest, dann schreib doch deine programme doch gleich in FASM. PB ist auch nur schnick schnack, der den Code in ASM code umwandelt und dann von FASM compilieren lässt. Und zeig du ma uns, an was du so genialem arbeitest.
Verfasst: 28.10.2004 20:29
von Ynnus
Benubi hat geschrieben:nun ich weiss ja auch nicht alles,
aber bei kompression werden daten vereinfacht; möglichweise farben neu definiert, oder zusammengelegt... (?)
du hast dann einen datenverlust, der für das AUGE nicht sichtbar ist; bei programmen kann man das allerdings nicht so einfach machen, da ein paar zeilen verlust das programm unbrauchbar machen...
Eine Komprimierung mit WinRAR ist aber verlustfrei. Wäre ja auch schlimm wenn so ein Archiv da einfach ein paar Byte wegfallen lassen würde. Und Bitmap ist im Normalfall sowieso unkomprimiert.
Verfasst: 29.10.2004 18:09
von Benubi
hey mir ist doch gestern abend beim einschlafen was eingefallen, weil ich so ein ähnliches problem habe:
Du benutzt Bytes. und bytes gehen "normalerweise" von -128 bis 127.
deshalb bekommst du nur die grautöne.
du muss also die negativen bytes in positive umwanden. sowas ähnliches müsste es sein... bei mir habe ich jetzt alle graustufen jetzt rausbekommen...
du müsstest dein zeichen in ein word umwandeln, und diese Funktion verwenden (gerade selbstgeschrieben

):
Code: Alles auswählen
;- Byte zu Word
Procedure.w ByteToWord(byteaddr.l)
RetByte.w
*bytet.b = PeekB(byteaddr)
If *bytet < 0
RetByte = 127 + (129 + *bytet)
Else
RetByte = *bytet
EndIf
ProcedureReturn RetByte
EndProcedure
;---- test ---
testbyte.b = 0
returnval.w = 0
CreateImage(1,256,256)
x.l
y.l
UseImage(1)
StartDrawing(ImageOutput())
testbyte = 0
For y = 0 To 255
returnval = ByteToWord(@testbyte)
For x = 0 To 255
Plot(x,y,RGB(returnval,returnval,returnval))
Next
;Debug "x="+Str(x)
; Debug "testbyte:"+ Str( testbyte )
; Debug "Fullbyte():" + Str (returnval)
testbyte = testbyte + 1
Next
StopDrawing()
savefile$=SaveFileRequester("Save BMP-Image:","Byte2Long.bmp","BMP-File (*.bmp)|*.BMP",0)
If savefile$<>""
SaveImage(1,savefile$,#PB_ImagePlugin_BMP,10) ; 10 = Beste Qualität
EndIf
End
* ---->

Verfasst: 29.10.2004 18:34
von NicTheQuick
@Benubi:
Das Problem mit den Bytes wurde schon von Max. gelöst. Das hat eben damit zu tun, dass alle Variablen in PureBasic signed (vorzeichenbehaftet) sind. Deine Funktion ist leider wesentlich langsamer als die einfache Bitoperation.