Image Grösse im Speicher
-
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Image Grösse im Speicher
Hallo ich habe mal eine Frage zu den Images.
Ich will ein ersteltes Bild per Network versenden aber es dazu nicht voher speichern um es dann neu einzulessen und dann zu versenden.
Gibts irgent eine möglichkeit die grösse eines Images zu ermiteln. also die grösse in Bites? Die Startadresse hat man ja.
Ich will ein ersteltes Bild per Network versenden aber es dazu nicht voher speichern um es dann neu einzulessen und dann zu versenden.
Gibts irgent eine möglichkeit die grösse eines Images zu ermiteln. also die grösse in Bites? Die Startadresse hat man ja.
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Wenn ich das richtig herausgelesen habe, liegt das Bild in irgendeinem Puffer, der durch AllocateMemory() erzeugt wurde.
Die Größe, die du bei AllocateMemory() angegeben hast, wird auch übertragen, also der gesamte Puffer, ob nun verwendet oder nicht.
Um die Größe eines Bildes herauszubekommen, rechnet man einfach:
Angaben (vorallem die Formel) ohne Garantie.
Greetz Laurin
Die Größe, die du bei AllocateMemory() angegeben hast, wird auch übertragen, also der gesamte Puffer, ob nun verwendet oder nicht.
Um die Größe eines Bildes herauszubekommen, rechnet man einfach:
Code: Alles auswählen
Größe = Breite * Höhe * Farbtiefe in Bytes
Farbtiefe:
32 Bits -> 4 Bytes
16 Bits -> 2 Bytes
8 Bits (256 Farben) -> 1 Byte
Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
Laut PB-Hilfe steht in image der Identifer - was immer das auch ist. (ImageID?)
Es scheint keine Möglichkeit zu geben, wie man die sPeicheradresse herausbekommt.
Hm...
Greetz Laurin
Edit: Vielleicht hilft OffsetOf(). Ist aber nur eine Vermutung.
Es scheint keine Möglichkeit zu geben, wie man die sPeicheradresse herausbekommt.
Hm...
Greetz Laurin
Edit: Vielleicht hilft OffsetOf(). Ist aber nur eine Vermutung.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
-
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
das ist aber nur so wenn du das machst.
Wenn #PB_Any als '#Image' Parameter verwendet wird, dann wird der Identifier des neuen Image als 'Ergebnis' zurückgegeben. Das Bild-Format wird vom aktuellen Bildschirm-Format abgeleitet.
also:
image = CreateImage(#PB_Any, 100, 100)
Edit:
also ich bekomme scheinbar das Ram adresse wieder. Jedenfalls sied es so aus.
debug CreateImage(0, 100, 100)
Wenn #PB_Any als '#Image' Parameter verwendet wird, dann wird der Identifier des neuen Image als 'Ergebnis' zurückgegeben. Das Bild-Format wird vom aktuellen Bildschirm-Format abgeleitet.
also:
image = CreateImage(#PB_Any, 100, 100)
Edit:
also ich bekomme scheinbar das Ram adresse wieder. Jedenfalls sied es so aus.
debug CreateImage(0, 100, 100)
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Code: Alles auswählen
*image = CreateImage(#PB_Any, 8, 8)
Debug *image
For i = 0 To 64
Debug PeekB(*image+i)
Next
Wenn du dir die Debugergebnisse anschaust, wirst du merken, dass nicht nur 0 rauskommt. Es kann also keine Speicheradresse sein.
Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.
-
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Jo leider. 
Da komme ich wohl nicht ums speichern rum und dann die datei neu einlessen und dann senden
Danke für deine Hilfe.
Aber kannst du mir sagen warum das bei mir einen Fehler ergibt?

Da komme ich wohl nicht ums speichern rum und dann die datei neu einlessen und dann senden

Danke für deine Hilfe.
Aber kannst du mir sagen warum das bei mir einen Fehler ergibt?
Code: Alles auswählen
*image = CreateImage(0, 8, 8)
Debug *image
For i = 0 To 64
Debug PeekB(*image+i)
Next
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
Merkwürdiger Fehler...
Selbst wenn man statt der 0 eine Konstante einsetzt, stürzt das Programm ab.
Bug?
Greetz Laurin
Edit: Ich weiß jetzt, was das mit dem Identifier auf sich hat:

Selbst wenn man statt der 0 eine Konstante einsetzt, stürzt das Programm ab.
Bug?
Greetz Laurin
Edit: Ich weiß jetzt, was das mit dem Identifier auf sich hat:
PB-Hilfe hat geschrieben:II. Dynamische Nummerierung
Manchmal ist die indexierte Nummerierung nicht sehr praktisch, um dynamische Situationen zu handhaben, wo wir mit einer unbekannten Anzahl von Objekten umgehen müssen. PureBasic bietet eine einfache und komplementäre Möglichkeit, Objekte auf eine dynamische Art und Weise zu erstellen. Beide Methoden (indexiert und dynamisch) können gleichzeitig - ohne irgendeinen Konflikt - verwendet werden. Um ein dynamisches Objekt zu erstellen, müssen Sie die #PB_Any Konstante anstelle einer Index-Zahl angeben, und die dynamische Nummer wird als Ergebnis der entsprechenden Funktion zurückgegeben. Dann verwenden Sie einfach diese Nummer mit den anderen Objektfunktionen an der Stelle, wo Sie sonst eine indexierte Zahl verwenden würden. Diese Art und Weise des Objekt-Handlings kann sehr nützlich sein, wenn es in Verbindung mit einer verknüpften Liste verwendet wird, welche auch auch einen dynamischen Weg des Speicherns darstellt. Ein vollständiges Beispiel für dynamische Objekte und verknüpfte Listen finden Sie hier: MDI ImageViewer.pb.
Beispiel
DynamicImage1 = CreateImage(#PB_Any, 640, 480) ; Erstellen eines dynamisch nummerierten Bildes
ResizeImage(DynamicImage1, 320, 240) ; Verändern der Größe von DynamicImage1
Zuletzt geändert von Laurin am 12.12.2004 03:00, insgesamt 1-mal geändert.
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
And we're out of beta. We're releasing on time.