Español
Fuente/ Codesnippets

Bildgröße Ermitteln

 

Jörg
Sellmeyer

'Code a Ermittlung el Maße de Bilddateien, sin esta a invitar.
'bisher voluntad folgende Formate automáticamente erkannt y el Maße ausgelesen:
'.bmp, .jpg, .gif, .png, .ico
'El Ausgaben para el .ico-Formato voluntad todavía erweitert.
'Außerdem se el Farbtiefe para Bilder todavía ausgelesen voluntad
'weitere folgen.
'el Code beruht en uno Presentación de
'Thomas Hölzer, Andreas Miethe, Hans-Jürgen Trog de el Jahr 2000
'$H StringsPfade.ph
'~StrFormat
'~HexFormatX

Proc MakeWord'con optionalem Parámetro. Wenn el gesetzt es, voluntad el Bytes vertauscht, el macht lo einfacher Bytes de una Zona (GetByte) umzuwandeln.

    If %pcount = 3

        Parámetros lbyte%, hbyte%'modus%
        Volver (hbyte% & $FF) | ((lbyte% & $FF) << 8)

    Más

        Parámetros lbyte%, hbyte%
        Volver (lbyte% & $FF) | ((hbyte% & $FF) << 8)

    EndIf

ENDPROC

Class BitmapInfo = Name$(256),x&,y&,Anzahl%,Typ$(3),BitmapInfo@
Class IconInfo = x%,y%,col&,bpp&,IconInfo@'bpp% = Bits por Pixel

Proc IconInfo.IconInfo

    Parámetros x%,y%,col&,bpp&
    .x% = x%
    .y% = y%
    .col& = col&
    .bpp& = bpp&

ENDPROC

Proc BitmapInfo.BitmapInfo

    Parámetros File$
    Declarar b#,Encabezamiento#
    Dim Encabezamiento#,45
    Declarar Pos%
    .Name$ = File$
    BlockRead(File$,Encabezamiento#,0,45)

    If Right$(Upper$(File$),4) = ".ICO"

        .Typ$ = "ico"
        .Anzahl% = Word(Encabezamiento#,4)

        If .Anzahl% > 0

            Declarar Icon#[.Anzahl%]

            WhileLoop 0, .Anzahl% - 1',16

                Seek i%,6 + &Loop * 16
                Icon#[&Loop] = New(IconInfo,GetByte(i%),GetByte(i%),GetByte(i%),GetWord(i%))

            Wend

        EndIf

    ElseIf Char$(Encabezamiento#,0,3) = "ÿØÿ"'el son como Hexwerte: FFD8FF + E0 oder E1

        Select Char$(Encabezamiento#,3,1)'viertes Signo suchen

            CaseOf "\xE0","\xE1"' "Ã","Ã	","â","ã","ä","Ã¥","æ","ç","è","é","ê","ë","ì","í","î","ï" bisher son me sólo el beiden ersten Möglichkeiten untergekommen

            .Typ$ = "jpg"
            Dim b#,10000
            Claro b#
            BlockRead(File$,b#,0,10000)

            WhileLoop 0, 15

                'Búsqueda después de FFC0 - detrás de él posición el Maße
                'auch hier puede evtl weitere Werte posición. Möglich son wohl FF + C0 a CF.
                'por lo tanto la Ermittlung en uno Bucle
                Pos% = MemPos(b#,0,Chr$($FF) + Chr$($C0 + &Loop) + Chr$($00) + Chr$($11))
                Case Pos% > -1: Romper

            Wend

            Inc Pos%,5
            .y& = MakeWord(Byte(b#,Pos%),Byte(b#,Pos% + 1),1)
            .x& = MakeWord(Byte(b#,Pos% + 2),Byte(b#,Pos% + 3),1)
            DisPose b#

        EndSelect

    ElseIf Char$(Encabezamiento#,0,2) = "BM"

        .Typ$ = "bmp"
        .x& = Largo(Encabezamiento#,18)
        .y& = Largo(Encabezamiento#,22)

    ElseIf Char$(Encabezamiento#,0,3) = "GIF"

        .Typ$ = "gif"
        .x& = Word(Encabezamiento#,6)
        .y& = Word(Encabezamiento#,8)

    ElseIf String$(Encabezamiento#,3) = "EMF"

        .Typ$ = "emf"

    ElseIf Char$(Encabezamiento#,0,4) = Chr$($89) + "PNG"

        .Typ$ = "png"
        .x& = MakeWord(Byte(Encabezamiento#,18),Byte(Encabezamiento#,19),1)
        .y& = MakeWord(Byte(Encabezamiento#,22),Byte(Encabezamiento#,23),1)

    ElseIf Char$(Encabezamiento#,0,4) = Chr$($D7) + Chr$($CD) + chr$($C6) + Chr$($9A)

        .Typ$ = "wmf"

    EndIf

    Caso negativo .Typ$ = "ico"

        .Anzahl% = .x& And .y&

    EndIf

ENDPROC

Proc Test

    Parámetros Bild$
    Declarar Bild#
    Case Bild$ = "":Bild$ = "Africa_satellite_plane.jpg"

    If FileExists(Bild$)

        Bild# = New(BitmapInfo,Bild$)

        With Bild#

            Imprimir "Bildname   = ",.Name$
            Imprimir "Bildtyp    = ",.Typ$
            Imprimir "BildBreite = ",.x&
            Imprimir "BildHöhe   = ",.y&
            Imprimir "Bildanzahl = ",.Anzahl%

        EndWith

        Disponer Bild#

    Más

        Imprimir "Fehler",Bild$

    EndIf

    WaitInput

ENDPROC

Test()

Umgestellt en Auslesen el Werte encima una Zona en lugar de GetByte.
Das Bild hay en el Moment hier para Runterladen:  [...]  7,5mb en nem langsamen Server - lo kann also algo dauern.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
11.10.2014  
 




Jörg
Sellmeyer
Lo voluntad todavía no todos jpg-Bilder correcto ausgelesen. Das scheint con el Speicherung de EXIF-Daten a tun a haben. 98% meiner Bilder voluntad aber schonmal korrekt ausgelesen.
Mehrere 1000 Archivos voluntad en wenigen Sekunden durchgeschreddert.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
15.10.2014  
 




GDL
Hallöle,

habe gerade obigen Code ausprobiert.

XPSE Startet y bricht entonces beim compilieren sin Fehlermeldung de.

In el xyz.err Expediente es entonces:

Mit Xprofan es zwar unregelmäßig (teilweise aber auch Abbruch sin Fehlermeldung como en XPSE), pero en cada jpg Bild se
BildBreite 160
Bildhöhe 120

ausgegeben.

Erst si yo el Bilder con Paint verkleinere en bajo 1MB y speichere, voluntad el richtigen Werte angegeben.

Yo nutze Win 8. Liegt lo tal vez daran?

Grüßle
Georg
 
Windows7 Xprofan 8,9,10 [...]  [...] 
21.08.2015  
 




Jörg
Sellmeyer
Wenn du me de tiempo unos pocos deiner Bilder enviar magst, voluntad Yo el gerne veces checken.
Yo No encienda weitergearbeitet, deshalb es auch el problema con el EXIF-Daten no Fijo. Irgendwie bin Yo como no weitergekommen.

Yo todavía XP, por lo tanto kann Yo el con W8 no testen.

Was el problema con XPSE angeht: dazu kann Yo nichts sagen, porque Yo, el no nutze.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
21.08.2015  
 




GDL
Hallöle,

jo, mach Yo el Tage. Sind todos de una Handy. Das weiß Yo.

Grüßle
Georg
 
XProfan X3
Windows7 Xprofan 8,9,10 [...]  [...] 
21.08.2015  
 



Zum Quelltext


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

6.188 Views

Untitledvor 0 min.
H.Brill10.02.2022
Frank16.04.2021
p.specht10.12.2020
Jörg Sellmeyer03.06.2020
Más...

Themeninformationen

Dieses Thema ha 2 subscriber:

Jörg Sellmeyer (3x)
GDL (2x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie