Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hallo,
ich bin bald am Wahnsinnigwerden. Ich habe eine SQLite Datenbank. Diese enthält ein "BLOB"-Feld, das eine JPG (also Bilddatei) enthält. Bisher habe ich die Datenbank ausgelesen, das resultierende Array indiziert und in einen Cluster umgewandelt und dort zieh ich mir jetzt der Reihe nach die Daten raus, die ich haben will. Funktioniert mit allem, bis auf die Bilddatei. Die Daten liegen als "Variant" vor. Mit der Funktion Variant nach Daten sollte ich etwas lesbares erzeugen... nur habe ich jetzt ewig mit jpg lesen und serialisierten grafiken rumgespielt... nichts bringt mich hier weiter.
Kann mir jemand helfen? Ich weiß es ist spät und Weihnachten steht vor der Tür, aber vielleicht schaut ja doch noch ein Weihnachtswichtel vorbei? :-D
Guten Morgen alle zusammen!
Mir ist noch etwas eingefallen: Ich habe in der Datenbank auch PDF Dateien liegen. Also erweitere ich meine Frage noch etwas:
Wie kann ich Daten PDF und JPG in eine SQLite Datenbank schreiben und auch wieder lesen? Ich möchte diese Daten im Prinzip so auslesen, dass ich sie entweder als Datei erhalte, die ich temporär speichern und dann mit einer beliebigen Anwendung lesen kann.
Die JPG möchte ich bspw. mit dem PDF-Toolkit ein eine Reportdatei einfügen, die PDF Dateien möchte ich dann entweder anhängen, oder wenigstens mit einem Viewer wie dem Acrobat Reader anzeigen lassen.
Ein neuer Versuch, diesmal etwas exakter, was ich eigentlich will:
Ich habe in einer Datenbank ein BLOB mit einem JPG gefüttert und lese es mit dem Netzwerk Toolkit aus. Das resultierende Array enthält die Werte aus der Datenbank. In der Spalte, in der das Bild liegt steht, dass der Inhalt nicht dargestellt werden kann. Wie verklicker ich LabView jetzt, das es ein JPG ist? Das VI unter Grafik verlangt zwingend nach einem Pfad zur Bilddatei. Was aber, wenn ich die Daten quasi schon im Speicher habe? Ich finde es nicht sinnvoll die Daten (wie auch immer) Temporär abzuspeichern, nur um sie dann wieder zu laden...
Na ja, Du müsstest Dein Byte-Array in die Routine einfüttern, die daraus ein Grafik-Array macht. Diese Routine ist sicher Bestandteil des Lese JPEG Datei Vi der Grafikfunktionen. Mir ist nicht bekannt, dass die Funktion zugänglich ist. Vielleicht mal NI fragen. Selber programmieren ist sicherlich auch keine Option.
Hallo... also ich glaube ich habe ein Problem Deine Antwort zu verstehen :-)
Also ich habe jetzt den Tipp bekommen, dass es mit den reinen JPG Daten in einem BLOB-Feld nicht geht. Ich muss also irgendwie die Bilddaten so in die Datenbank speichern, dass ich sie auch nutzen kann. Gennant werden hier Lösungen als STRING der in HEX umgewandelt und beim Auslesen wieder zurückgewandelt wird. TIA hatte da mal ein Beispiel gepostet, aber dieses kann ich nicht nachvollziehen, da ich die verwendeten VI's auf der Pallette gar nicht finden kann.
Im Moment bastel ich gearade mit der Funktion 2D Pixmap nach 1D herum, aber auch hier stoße ich auf Probleme. Ich hatte geglaubt ich nehme die Funktion JPG lesen, wandel das in ein 1D-Array um. Speicher das ab und lese es wieder aus, aber hier kommt es zu Typfehlern. Irgendwie ist das alles bei mir nicht kompatibel, egal was ich wie mit was verbinde :-(
Kann mir jemand bitte mal ein Beispiel geben, wie ich ein Bild lade, in ein verwertbares Array umwandel und dieses dann wieder als Bild anzeigen lassen kann? Ohne den Datenbankschritt, das werde ich dann schon irgendwie gebastelt bekommen denke ich.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
SQLite - Blob - Jpg - lesen - Darstellen...
Etwas :
Ich schreibe in die DB immer nur einen Dateipfad (auf dem Netz) und kopiere die Bilddateien, PDFs... in den entsprechenden Ordner.
Dann lasse ich mir die Dateien anhand des Dateipfads anzeigen (z.B. im Internet Explorer per ActiveX).
Das geht relativ schnell und unproblematisch.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Hallo,
ja normalerweise mache ich das auch so, schon wegen der DB Performance, der DB Größe usw... aber es muss sichergestellt sein, dass an den Daten nichts verändert wird. Speicher ich sie in einem Ordner, kann "jeder" die Bilder manipulieren, austauschen usw. Wenn ich sie aber in der Datenbank ablege muss zumindest die Kennwortabfrage und Benutzername "überwunden" werden.
Das ist aber auch echt zu blöd die ganze Sache.
Ich überlege die ganze Zeit, ob es nicht möglich ist, die JPG, oder PDF Daten als Datei in den Blob zu schieben und dann wenigstens temporär als Datei zu speichern, einzulesen, anzeigen lassen und gut ist. Aber ich habe erstens nur die Funktion zum erstellen einer Temporären Datei gefunden, ohne, dass hier gesagt wird, was am Ende damit geschieht. Und Zweitens kann labview scheinbar die Binärdaten gar nicht so ohne weiteres speichern.
Ich bin kurz davor eine DLL in VS zu schreiben, aber das wird extrem aufwändig, wahrscheinlich geht Labview damit in die Knie, die Performanceprolbeme will ich garn nicht überdenken und ob ich das sauber hinbekomme steht auch auf einem ganz anderen Blatt....
Ob ich wohl besser aufgeben sollte und "geht nicht" sage? Gefällt mir eigentlich gar nicht der Gedanke...
' schrieb:Ich überlege die ganze Zeit, ob es nicht möglich ist, die JPG, oder PDF Daten als Datei in den Blob zu schieben und dann wenigstens temporär als Datei zu speichern, einzulesen, anzeigen lassen und gut ist. Aber ich habe erstens nur die Funktion zum erstellen einer Temporären Datei gefunden, ohne, dass hier gesagt wird, was am Ende damit geschieht. Und Zweitens kann labview scheinbar die Binärdaten gar nicht so ohne weiteres speichern.
Also mit "Write To Binary File" sollte es möglich sein, einen Binärstring in genau der Form, in der er vorliegt, auf die HDD zu schreiben...
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:Ob ich wohl besser aufgeben sollte und "geht nicht" sage?
Geht nicht... gibts nicht!
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!