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:

QR Code Bild erstellen und lesen

 
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
michaelblasin



Anmeldungsdatum: 09.11.2010
Beiträge: 38

BeitragVerfasst am: 09.09.2016, 16:41    Titel: QR Code Bild erstellen und lesen Antworten mit Zitat

Hallo,

Wie kann man ein QR Code Bild erstellen ?
Wie kann man ein QR Code Bild lesen ?

Für das Lesen eines QR Kodes aus einem .PNG Bild habe ich einen Source Kode aus 'http://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.bz2/download' heruntergeladen.

Beim Compilieren gibt es 2 Fehler
1. scan_image.bas(34) warning 3(1): Passing different pointer types, at parameter 2 of PNG_SET_LONGJMP_FN()
2. scan_image.bas(45) error 41: Variable not declared, png_set_gray_1_2_4_to_8 in 'IF colr = PNG_COLOR_TYPE_GRAY ANDALSO bits < 8 THEN png_set_gray_1_2_4_to_8(png)'

Das löst dann aber auch nicht das Problem, ein QR Bild zu erstellen.

Kann jemand helfen ? Danke.
Michael Blasin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 09.09.2016, 18:02    Titel: Antworten mit Zitat

Kannst du vielleicht nochmal genau sagen, welche Datei du compilieren willst? Ich finde in diesem Download zwar einige scan_image.*, aber keine scan_image.bas.

Welches Betriebssystem nutzt du?
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
michaelblasin



Anmeldungsdatum: 09.11.2010
Beiträge: 38

BeitragVerfasst am: 18.09.2016, 17:30    Titel: QR Kode Bild erstellen und lesen Antworten mit Zitat

Hallo,

Habe Windows 7 und Windows 98, auf beiden Computern erfolgt die gleiche Meldung.

Nachstehend scan_image.bas

Code:
' This is file scan_image.bas
'
' a FreeBasic translation of file scan_image.c from zbar library
' GPL-3 (C) 2013 by Thomas[ dot ]Freiherr[ at ]gmx[ dot ]net
'
' For details see
' http://zbar.sourceforge.net
'
' * load image
' * scan for codes
' * output decoded results to stdout
'
' Compile source with
'   fbc scan_image.bas
' and execute with png filename as parameter, like
'   ./scan_image qr1.png

#INCLUDE ONCE "png.bi"
#INCLUDE ONCE "zbar/zbar.bi"

'/* to complete a runnable example, this abbreviated implementation of
 '* get_data() will use libpng to read an image file. refer to libpng
 '* documentation for details
 '*/
FUNCTION get_data( _
  BYVAL Nam AS ZSTRING PTR, _
  BYVAL W AS INTEGER PTR, _
  BYVAL H AS INTEGER PTR) AS ANY PTR

  VAR file = fopen(Nam, "rb")
  IF 0 = file THEN ?"Couldn't open file!" : END 2
  VAR png = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)
  IF 0 = png THEN ?"Couldn't create read struct!" : END 3
  IF setjmp(png_jmpbuf(png)) THEN ?"Error setjmp!" : END 4
  VAR info = png_create_info_struct(png)
  IF 0 = info THEN ?"Couldn't get file info!" : END 5

  png_init_io(png, file)
  png_read_info(png, info)

  '/* configure for 8bpp grayscale input */
  VAR colr = png_get_color_type(png, info)
  VAR bits = png_get_bit_depth(png, info)
  IF colr AND PNG_COLOR_TYPE_PALETTE THEN png_set_palette_to_rgb(png)
  IF colr = PNG_COLOR_TYPE_GRAY ANDALSO bits < 8 THEN png_set_gray_1_2_4_to_8(png)
  IF bits = 16 THEN png_set_strip_16(png)
  IF colr AND PNG_COLOR_MASK_ALPHA THEN png_set_strip_alpha(png)
  IF colr AND PNG_COLOR_MASK_COLOR THEN png_set_rgb_to_gray_fixed(png, 1, -1, -1)

  '/* allocate image */
  *W = png_get_image_width(png, info)
  *H = png_get_image_height(png, info)
  VAR r = ALLOCATE(*W * *H)
  IF 0 = r THEN ?"Couldn't allocate memory!" : END 6

  DIM AS png_bytep rows(*H - 1)
  FOR i AS INTEGER = 0 TO *H - 1
    rows(i) = r + (*W * i)
  NEXT
  png_read_image(png, @rows(0))
  RETURN r
END FUNCTION


' ***** main *****
IF __FB_ARGC__ < 2 THEN ?"Pass file name as parameter!" : END 1

'/* create a reader */
VAR scanner = zbar_image_scanner_create()

'/* configure the reader */
zbar_image_scanner_set_config(scanner, 0, ZBAR_CFG_ENABLE, 1)

'/* obtain image data */
VAR width_ = 0, height = 0
VAR raw = get_data(__FB_ARGV__[1], @width_, @height)

'/* wrap image data */
VAR image = zbar_image_create()
zbar_image_set_format(image, *CAST(UINTEGER PTR, @"Y800"))
zbar_image_set_size(image, width_, height)
zbar_image_set_data(image, raw, width_ * height, @zbar_image_free_data)

'/* scan the image for barcodes */
VAR n = zbar_scan_image(scanner, image)

'/* extract results */
VAR symbol = zbar_image_first_symbol(image)
WHILE symbol
  '/* do something useful with results */
  VAR typ = zbar_symbol_get_type(symbol)
  VAR dat_ = zbar_symbol_get_data(symbol)
  PRINT "decoded " & *zbar_get_symbol_name(typ) & " symbol """ & *dat_ & """"
  symbol = zbar_symbol_next(symbol)
WEND

'/* clean up */
zbar_image_destroy(image)
zbar_image_scanner_destroy(scanner)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
michaelblasin



Anmeldungsdatum: 09.11.2010
Beiträge: 38

BeitragVerfasst am: 22.09.2016, 21:59    Titel: QR Kode Bild erstellen und lesen Antworten mit Zitat

nemored hat Folgendes geschrieben:
Kannst du vielleicht nochmal genau sagen, welche Datei du compilieren willst? Ich finde in diesem Download zwar einige scan_image.*, aber keine scan_image.bas.

Welches Betriebssystem nutzt du?


Hallo,

Habe Windows 7 und Windows 98, auf beiden Computern erfolgt die gleiche Meldung.

Nachstehend scan_image.bas

Code:
' This is file scan_image.bas
'
' a FreeBasic translation of file scan_image.c from zbar library
' GPL-3 (C) 2013 by Thomas[ dot ]Freiherr[ at ]gmx[ dot ]net
'
' For details see
' http://zbar.sourceforge.net
'
' * load image
' * scan for codes
' * output decoded results to stdout
'
' Compile source with
' fbc scan_image.bas
' and execute with png filename as parameter, like
' ./scan_image qr1.png

#INCLUDE ONCE "png.bi"
#INCLUDE ONCE "zbar/zbar.bi"

'/* to complete a runnable example, this abbreviated implementation of
'* get_data() will use libpng to read an image file. refer to libpng
'* documentation for details
'*/
FUNCTION get_data( _
BYVAL Nam AS ZSTRING PTR, _
BYVAL W AS INTEGER PTR, _
BYVAL H AS INTEGER PTR) AS ANY PTR

VAR file = fopen(Nam, "rb")
IF 0 = file THEN ?"Couldn't open file!" : END 2
VAR png = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL)
IF 0 = png THEN ?"Couldn't create read struct!" : END 3
IF setjmp(png_jmpbuf(png)) THEN ?"Error setjmp!" : END 4
VAR info = png_create_info_struct(png)
IF 0 = info THEN ?"Couldn't get file info!" : END 5

png_init_io(png, file)
png_read_info(png, info)

'/* configure for 8bpp grayscale input */
VAR colr = png_get_color_type(png, info)
VAR bits = png_get_bit_depth(png, info)
IF colr AND PNG_COLOR_TYPE_PALETTE THEN png_set_palette_to_rgb(png)
IF colr = PNG_COLOR_TYPE_GRAY ANDALSO bits < 8 THEN png_set_gray_1_2_4_to_8(png)
IF bits = 16 THEN png_set_strip_16(png)
IF colr AND PNG_COLOR_MASK_ALPHA THEN png_set_strip_alpha(png)
IF colr AND PNG_COLOR_MASK_COLOR THEN png_set_rgb_to_gray_fixed(png, 1, -1, -1)

'/* allocate image */
*W = png_get_image_width(png, info)
*H = png_get_image_height(png, info)
VAR r = ALLOCATE(*W * *H)
IF 0 = r THEN ?"Couldn't allocate memory!" : END 6

DIM AS png_bytep rows(*H - 1)
FOR i AS INTEGER = 0 TO *H - 1
rows(i) = r + (*W * i)
NEXT
png_read_image(png, @rows(0))
RETURN r
END FUNCTION


' ***** main *****
IF __FB_ARGC__ < 2 THEN ?"Pass file name as parameter!" : END 1

'/* create a reader */
VAR scanner = zbar_image_scanner_create()

'/* configure the reader */
zbar_image_scanner_set_config(scanner, 0, ZBAR_CFG_ENABLE, 1)

'/* obtain image data */
VAR width_ = 0, height = 0
VAR raw = get_data(__FB_ARGV__[1], @width_, @height)

'/* wrap image data */
VAR image = zbar_image_create()
zbar_image_set_format(image, *CAST(UINTEGER PTR, @"Y800"))
zbar_image_set_size(image, width_, height)
zbar_image_set_data(image, raw, width_ * height, @zbar_image_free_data)

'/* scan the image for barcodes */
VAR n = zbar_scan_image(scanner, image)

'/* extract results */
VAR symbol = zbar_image_first_symbol(image)
WHILE symbol
'/* do something useful with results */
VAR typ = zbar_symbol_get_type(symbol)
VAR dat_ = zbar_symbol_get_data(symbol)
PRINT "decoded " & *zbar_get_symbol_name(typ) & " symbol """ & *dat_ & """"
symbol = zbar_symbol_next(symbol)
WEND

'/* clean up */
zbar_image_destroy(image)
zbar_image_scanner_destroy(scanner)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 24.09.2016, 10:19    Titel: Antworten mit Zitat

Um dein Code auszuführen braucht man die zbar.bi, die existiert nicht (oder bin ich Blind?). Die Datentypen würde ich mir auch nicht durch VAR zuweisen lassen sondern mit DIM. So muss man immer in den Quellen herum Wurschteln damit man weiß womit man es zu tun hat. Deklariere deine Variablen so wie sie im C Code auch deklariert sind.
Den Code hier in "code" hier der Code "/code" einschließen, dann ist es noch etwas leserlicher. Die Anführungsstriche musst du natürlich durch eckige klammern ersetzten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 24.09.2016, 18:16    Titel: Antworten mit Zitat

Die Funktion
Code:
png_set_gray_1_2_4_to_8
wurde in
Code:
png_set_expand_gray_1_2_4_to_8
umbenannt.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 25.09.2016, 09:32    Titel: Antworten mit Zitat

Ich hab mal das Laden der zbar.bi auskommentiert um zu schauen welche Fehler noch in der Funktion get_data () auftreten. Außer das png_set_gray_1_2_4_to_8 geändert werden musste, konnte ich weder unter Linux(64) noch unter Windows 8.1(64) die erstgenannte Warnung reproduzieren. Korrigiere also erst mal png_set… wie grinstone geschrieben hat, dann müsste es Kompilieren. Ignoriere die Warnung erst mal und schau ob das Programm funktioniert, um die Warnung kannst du dich dann immer noch kümmern.

Edit: 15.42
Ich Sitz hier Grad vor einem Windows 10 (32) und hab das gleiche gemacht wie oben schon beschrieben. Abgesehen davon das der FBC natürlich die zbar-SUB/Funktionen vermisst, konnte ich auch hier die von dir beschriebene Warnung nicht reproduzieren!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 25.09.2016, 16:26    Titel: Antworten mit Zitat

Zur Information: Die zbar.bi ist im Paket zbar-0.10.tar.bz2 enthalten, die sich von der im Quellcode angegebenen Adresse herunterladen lässt.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 25.09.2016, 18:08    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Zur Information: Die zbar.bi ist im Paket zbar-0.10.tar.bz2 enthalten, die sich von der im Quellcode angegebenen Adresse herunterladen lässt.

Gruß
grindstone

Vielleicht bin ich ja tatsächlich Blind? Ich hab das Paket nochmal durchsucht, aber ich kann da nichts finden was irgendwie mit FB zu tun hätte. In welchem Ordner hast du die gefunden?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 25.09.2016, 19:31    Titel: Antworten mit Zitat

@Elor:
Entschuldige, da habe ich eine falsche Quelle angegeben. peinlich

Die FB - Bindings findest du unter

http://www.freebasic-portal.de/dlfiles/431/libzbar-0.10.zip

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 26.09.2016, 09:41    Titel: Antworten mit Zitat

@grindstone:
Danke, da hätte ich jetzt aber noch lange suchen können lächeln

@michaelblasin:
Außer das "png_set_gray_1_2_4_to_8" geändert werden muss (siehe Post grindstone), kann ich immer noch auf allen Systemen (Linux(64), Windows(32)(64)) Warn- und Fehlerfrei Kompilieren!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
michaelblasin



Anmeldungsdatum: 09.11.2010
Beiträge: 38

BeitragVerfasst am: 02.10.2016, 19:56    Titel: QR Kode lesen und schreiben Antworten mit Zitat

Hallo,

Ich habe umbenannt
png_set_gray_1_2_4_to_8
in
png_set_expand_gray_1_2_4_to_8

Erhalte jetzt 2 Nachrichten

C:\Fbc\FbEdit\..\fbc -s console "scan_image.bas"
scan_image.bas(34) warning 3(1): Passing different pointer types, at parameter 2 of PNG_SET_LONGJMP_FN()
C:\Fbc\bin\win32\ld.exe: cannot find -lzbar-0
Build error(s)

Den Ordner 'zbar' habe ich im Ordner 'inc' kopiert.

Gruss M. Blasin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 949
Wohnort: Austria

BeitragVerfasst am: 02.10.2016, 20:48    Titel: Re: QR Kode lesen und schreiben Antworten mit Zitat

michaelblasin hat Folgendes geschrieben:
C:\Fbc\bin\win32\ld.exe: cannot find -lzbar-0

Naja, der Linker sagt dir im Grunde eh schon genau was das Problem ist: er kann die Bibliothek "zbar-0" nicht finden.

Du brauchst also eine "zbar-0.dll" oder eine "libzbar-0.a" im Linker-Such-Pfad (was u.a. das Arbeitsverzeichnis sowie den lib/win32 FB-Unterordner beinhaltet).
_________________
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
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