Image breite und Höhe

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

@Macros
ich bekomme so einen Error bei "Hohe.l = ImageHeight()" dieser lautet "Invalid memory access." habe ich was falsch gemacht?
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Hast du bei ExamineDirectroy auch
den/die richtigen Pattern angegeben?
Und dann auch den/die richtigen Decoder aktiviert?
(z.B. UseJPEGImageDecoder)
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

ja habe ich...

Hier ist der Code mit Plattern

Code: Alles auswählen

      If ExamineDirectory(50, IMG_Fulder, "*.jpg")
        CallDebugger 
        While NextDirectoryEntry()=1
          img_datei$ = DirectoryEntryName()
          LoadImage(2,img_datei$)
          UseImage(2)
          Hohe.l = ImageHeight()
          Breite.l = ImageWidth()
          Debug Hohe.l
          Debug Breite.l
          img_datei$ = RemoveString(img_datei$, ".jpg")
          img_datei$ = RemoveString(img_datei$, ".JPG")
          If Hohe<=55 And Breite<=55
            AddGadgetItem(#File,-1,img_datei$)
          EndIf
        Wend
      EndIf 
und der dekoder ist auch geladen
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Code: Alles auswählen

If ExamineDirectory(50, IMG_Fulder, "*.jpg")
        CallDebugger
        While NextDirectoryEntry()=1
          img_datei$ = IMG_Fulder+"\"+DirectoryEntryName()
          LoadImage(2,img_datei$)
          UseImage(2)
          Hohe.l = ImageHeight()
          Breite.l = ImageWidth()
          Debug Hohe.l
          Debug Breite.l
          img_datei$ = RemoveString(img_datei$, ".jpg")
          img_datei$ = RemoveString(img_datei$, ".JPG")
          If Hohe<=55 And Breite<=55
            AddGadgetItem(#File,-1,img_datei$)
          EndIf
        Wend
      EndIf 
Hier der Fehler: man muss natürlich den kompletten Pfad angeben
img_datei$ = IMG_Fulder+"\"+DirectoryEntryName()
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

Super danke :) jetzt geht es wie geplant :D
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag von Sylvia »

Das Laden der Bilder (LoadImage()) dauert relativ gesehen, besonders
bei grossen Dateien, recht lange. Wenn es nur um die Information
Breite & Höhe geht, lässt sich das viel schneller mit diesem Code machen:

Code: Alles auswählen

OpenFile(1,"d:\test.jpg")

FileSeek(163)

h=(ReadByte() & $FF)*256+(ReadByte() & $FF)  ; Hoehe
b=(ReadByte() & $FF)*256+(ReadByte() & $FF)  ; Breite

CloseFile(1)

Debug "Höhe  : "+Str(h)
Debug "Breite: "+Str(b)
Basic Pur = PureBasic
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Funktioniert bei Bildern, die ich mit
Paintshop Pro 9 erstellt, bearbeitet habe nicht. :(
(Bei Paint klappts natürlich)
Antworten