Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

png_destroy(buffer)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 11.06.2009, 19:29    Titel: png_destroy(buffer) Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 11.06.2009, 20:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 11.06.2009, 21:36    Titel: Antworten mit Zitat

Ich glaub ich kann mich erinnern im englischen FB Forum etwas darüber gelesen zu haben.

Nämlich hier: http://www.freebasic.net/forum/viewtopic.php?t=8024&postdays=0&postorder=asc&start=0
//edit: hab grad gelesen, dass du diese Lib schon verwendest. Vl. probierst du auch die Compiler version 0.21
http://www.freebasic.net/forum/viewtopic.php?p=121153#121153

Vielleicht hilft es ja. Ich hab die Bibliothek noch nie verwendet.
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 11.06.2009, 21:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 11.06.2009, 22:20    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 11.06.2009, 22:59    Titel: Antworten mit Zitat

Zitat:
wo kann ich nachlesen, wie die png Datei aufgebaut ist.


Alles rund um Dateiformate:
==> http://www.wotsit.org/list.asp?search=Png
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 12.06.2009, 00:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 12.06.2009, 11:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 13.06.2009, 01:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 13.06.2009, 14:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 13.06.2009, 19:01    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 13.06.2009, 20:25    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 13.06.2009, 20:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 13.06.2009, 21:13    Titel: Antworten mit Zitat

Alle Integer Werte in der png-Datei sind in 'network byte order' also Big Endian -Format.
Bei Bytes spielt das natürlich keine Rolle grinsen
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 13.06.2009, 21:15    Titel: Antworten mit Zitat

ich hatte es schon mal für bmp Dateien gemacht, aber noch nicht für png oder jpg dateien
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 13.06.2009, 21:33    Titel: Antworten mit Zitat

Was sagt Wikipedia dazu grinsen

http://de.wikipedia.org/wiki/Byte-Reihenfolge
http://de.wikipedia.org/wiki/PNG
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz