Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 11.06.2009, 19:29 Titel: png_destroy(buffer) |
|
|
fbpng.bi
Hier der Auszug des Codes:
Code: |
#ifndef _PNG_LOAD_BI_
#define _PNG_LOAD_BI_
#ifndef PNG_STATICZ
#inclib "z"
#endif
#ifdef PNG_DEBUG
#include once "fbmld.bi"
#endif
#inclib "fbpng"
enum png_target_e
PNG_TARGET_BAD
PNG_TARGET_FBOLD
PNG_TARGET_FBNEW
PNG_TARGET_OPENGL
end enum
Declare Function png_load Cdecl Alias "png_load" _
( _
Byref filename As String, _
Byval target As png_target_e = PNG_TARGET_FBNEW _
) As Any Ptr
declare function png_load_mem cdecl alias "png_load_mem" _
( _
byval buffer as any ptr, _
byval buffer_len as integer, _
byval target as png_target_e = PNG_TARGET_FBNEW _
) as any ptr
declare function png_save cdecl alias "png_save" _
( _
byref filename as string, _
byval img as any ptr _
) as integer
declare sub png_dimensions cdecl alias "png_dimensions" _
( _
byref filename as string, _
byref w as uinteger, _
byref h as uinteger _
)
declare sub png_dimensions_mem cdecl alias "png_dimensions_mem" _
( _
byval buffer as any ptr, _
byref w as uinteger, _
byref h as uinteger _
)
#endif '_PNG_LOAD_BI_
|
Wie ich sehr schnell festgestellt habe, fehlt bei mir png_destroy(buffer).
Hätte jemand den Code, mit der png_destroy, damit ich es auch verwenden kann?
Ich meine damit ich den Puffer auch wieder zerstören kann?
Bei mir gibt es Probleme, wenn ich mehrere Grafiken verwende.
Die Grafiken werden nicht korrekt dargestellt und ich tippe darauf, da ich den Puffer vorher nicht zerstört hatte. |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 11.06.2009, 20:31 Titel: |
|
|
http://www.freebasic-portal.de/index.php?s=tutorials&id=27&seite=2
Hier wird es sogar erklärt
Ich verwende nun diese Bibliothek
fbpng_v1_9_2.tar
Jedoch bekomme ich beim compilen gesagt:
Command executed:
"C:\Programme\FreeBASIC\fbc.exe" -s gui "C:\sssss.bas"
Compiler output:
C:\sssss.o:fake:(.text+0xf2a): undefined reference to `png_destroy'
Results:
Compilation failed |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 11.06.2009, 21:41 Titel: |
|
|
This change means that you cannot use ImageDestroy
anymore if you are using FB 0.20.
Diese Änderung meint, dass man nicht mehr ImageDestroy verwenden kann, wenn man die FB 0.20 verwendet.
Ich hoffe, dass ich es richtig übersetzt habe.
Hab geguckt "verwende die FB 0.20".
Also anderen compiler installieren |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 11.06.2009, 22:20 Titel: |
|
|
das es mit dem png nicht funktioniert.....
wo kann ich nachlesen, wie die png Datei aufgebaut ist.
Irgendwie muss ich doch an die Daten kommen.
Cu Andy |
|
Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 956 Wohnort: Austria
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 12.06.2009, 00:25 Titel: |
|
|
fb0.20 -> png_destroy (mit passender version von der pnglib)
fb0.21 -> imagedestroy _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 12.06.2009, 11:58 Titel: |
|
|
Wenn du trotz neuer Version fbpng_v1_9_2.tar die Fehlermeldung
C:\sssss.o:fake:(.text+0xf2a): undefined reference to `png_destroy' erhälst, sind unter
C:\Programme\FreeBASIC\inc\fbpng.bi
C:\Programme\FreeBASIC\lib\win32\libfbpng.a evtl. immer noch die alte Dateien eingebunden und werden auch noch von fbc benutzt? _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 13.06.2009, 01:45 Titel: |
|
|
Sodelle, hab jetzt mal eine PNG Datei binaer eingelesen.
Nun ist folgendes:
Ich bekomme die Signatur raus.
Jetzt hapert es schon die IHDR auszulesen.
siehe: http://i31www.ira.uka.de/docs/mm+ep/02_PNG/node5.html
hier wird es beschrieben, aber irgendwie stimmt es nicht, dass dieser Chunck direkt nach der Signatur kommt.
Ich habs mir sogar mal im Editor angeschaut.
Passt irgendwie nicht.
Hier der Code von mir:
Code: |
Const w = 800, h = 600
Dim As Integer Zeilen, Spalten
ScreenRes w, h, 32,16
DIM array (1 to 21) AS STRING * 1
Dim rechnung (1 to 20) as integer
DIM umwandlung (1 to 20) as string
dim aha as string
dim a as integer
dim i as integer
dim asci as integer
Open "c:\bilder\10000.png" For Binary As #1
do
a = a + 1
Get #1, a , array(a)
loop until a = 21
Close #1
print "Signatur"
for i = 1 to 8
asci = asc (array(i))
locate 2,i * 3
print hex (asci,2)
next
for i = 9 to 13
rechnung(i-8)= asc (array(i))
umwandlung(i-8) = bin (rechnung(i-8), 8)
next
aha = umwandlung(1)+ umwandlung(2) + umwandlung(3) + umwandlung(4)
aha = "&b" + aha
PRINT VAL(aha)
sleep
|
|
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 13.06.2009, 14:23 Titel: |
|
|
Versuch es mal so:
Code: | Dim As Integer a, ff= FreeFile
Screen 18
Open "c:\bilder\10000.png" For Binary As #ff
Get #ff, 1, a
Print Mki(a)
Get #ff, 13, a
Print Mki(a)
Close #ff
Sleep |
In der fbpng_v1_9_2.tar ist eine gute png-Beschreibung (rfc2083.html). _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 13.06.2009, 19:01 Titel: |
|
|
ok, danke @volta
aber eine Frage hätte ich noch. Warum passt mein Code nicht.
Hätte von euch jemand eine Lösung, wie ich zumindestens die Höhe und die Breite herausfinde?
Steht ja in dem beschriebenen chunk drin..
hoffe auf einen Programmiercode "irgendwas stimmt an meinem Programmiercode nicht". Würde nur gerne wissen was |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 13.06.2009, 20:25 Titel: |
|
|
Im Header der png Datei werden Integerwerte im Big Endian -Format (network byte order) abgelegt. Die x86 Prozessoren lesen aber Integerwerte im Little Endian -Format, daher umwandeln:
Code: | Dim As Integer a, ff= FreeFile
Function LittleEndian(B As UInteger) As UInteger
'(rfc2083.html) 2.1. Integers and byte order
'All integers that require more than one byte must be in network
'byte order: the most significant byte comes first, then the less
'significant bytes in descending order of significance (MSB LSB for
'two-byte integers, B3 B2 B1 B0 for four-byte integers).
'(Little Endian : B0 B1 B2 B3)
Dim p As UByte Ptr = Cast(UByte Ptr,@B)
swap p[3], p[0]
swap p[2], p[1]
Function = B
End Function
'oder
'Function LittleEndian(B As UInteger) As UInteger
' Asm
' mov eax,[B]
' bswap eax
' mov [Function],eax
' End Asm
'End Function
Screen 18
Open "c:\bilder\10000.png" For Binary As #ff
Get #ff, 1 , a
Print Mki(a)
Get #ff, 13 , a
Print Mki(a)
Get #ff, , a
Print "Width: ";LittleEndian(a)
Get #ff, , a
Print "Height: ";LittleEndian(a)
Close #ff
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 13.06.2009, 20:49 Titel: |
|
|
Erstmal danke, der Code funktioniert.
Aber eine Frage habe ich noch. Steht alles im Header im LittleEndian?
Ich meine nur im Dateikopf?
und wie sieht es mit den anderen Chunks aus?
Trotzdem ich verstehe dein Code fast nicht.
Muss mich da nochmal durschwurschteln.
Trotzdem danke.
Aber so wie es ausschaut, kann ich das Projekt "png Datei auslesen" abhaken.
Auslesen = Bild erstellen aus den Raw Daten |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 13.06.2009, 21:13 Titel: |
|
|
Alle Integer Werte in der png-Datei sind in 'network byte order' also Big Endian -Format.
Bei Bytes spielt das natürlich keine Rolle
Zitat: | "png Datei auslesen" und .. Bild erstellen aus den Raw Daten |
ist schon erheblicher Aufwand, da es sehr unterschiedliche Bildformate und komplizierte Kompressionsverfahren für die png-Dateien gibt. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 13.06.2009, 21:15 Titel: |
|
|
ich hatte es schon mal für bmp Dateien gemacht, aber noch nicht für png oder jpg dateien |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
|
Nach oben |
|
 |
|