Français
Source/ Codesnippets

Bildgröße Ermitteln

 

Jörg
Sellmeyer

'Code zur Ermittlung qui Maße de Bilddateien, sans cet trop magasin.
'bisher volonté folgende Formate automatisch erkannt et qui Maße ausgelesen:
'.bmp, .jpg, .gif, .png, .ico
'qui Ausgaben pour cela .ico-Format volonté encore erweitert.
'Aussi soll qui Farbtiefe pour Bilder encore ausgelesen volonté
'weitere folgen.
'qui Code beruht sur einer Présentation de
'Thomas Bois, Andreas Miethe, Hans-Jürgen Trog aus dem l'an 2000
'$H StringsPfade.ph
'~StrFormat
'~HexFormatX

Proc MakeWord'avec optionalem paramètre. si qui gesetzt ist, volonté qui Bytes vertauscht, cela fait es einfacher Bytes aus einem Bereich (GetByte) umzuwandeln.

    Si %pcount = 3

        Paramètres lbyte%, hbyte%'modus%
        Retour (hbyte% & $FF) | ((lbyte% & $FF) << 8)

    D'autre

        Paramètres lbyte%, hbyte%
        Retour (lbyte% & $FF) | ((hbyte% & $FF) << 8)

    EndIf

ENDPROC

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

Proc IconInfo.IconInfo

    Paramètres x%,y%,col&,bpp&
    .x% = x%
    .y% = y%
    .col& = col&
    .bpp& = bpp&

ENDPROC

Proc BitmapInfo.BitmapInfo

    Paramètres File$
    Déclarer b#,En-tête#
    Faible En-tête#,45
    Déclarer Pos%
    .nom$ = File$
    BlockRead(File$,En-tête#,0,45)

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

        .Typ$ = "ico"
        .Anzahl% = Word(En-tête#,4)

        Si .Anzahl% > 0

            Déclarer Icon#[.Anzahl%]

            WhileLoop 0, .Anzahl% - 1',16

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

            Wend

        EndIf

    ElseIf Char$(En-tête#,0,3) = "ÿØÿ"'ce sont comme Hexwerte: FFD8FF + E0 ou bien E1

        Select Char$(En-tête#,3,1)'viertes marque chercher

            CaseOf "\xE0","\xE1"' "Ã","Ã	","â","ã","ä","Ã¥","æ","ç","è","é","ê","ë","ì","í","î","ï" bisher sommes mir seulement qui beiden ersten Opportunités untergekommen

            .Typ$ = "jpg"
            Faible b#,10000
            Claire b#
            BlockRead(File$,b#,0,10000)

            WhileLoop 0, 15

                'cherche pour FFC0 - derrière elle stehen qui Maße
                'aussi ici peut peut-être weitere Werte stehen. Möglich sommes wohl FF + C0 jusqu'à CF.
                'tout autor qui Ermittlung dans einer Boucle
                Pos% = MemPos(b#,0,Chr$($FF) + Chr$($C0 + &Boucle) + Chr$($00) + Chr$($11))
                Cas Pos% > -1: Pause

            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$(En-tête#,0,2) = "BM"

        .Typ$ = "bmp"
        .x& = Long(En-tête#,18)
        .y& = Long(En-tête#,22)

    ElseIf Char$(En-tête#,0,3) = "GIF"

        .Typ$ = "gif"
        .x& = Word(En-tête#,6)
        .y& = Word(En-tête#,8)

    ElseIf String$(En-tête#,3) = "EMF"

        .Typ$ = "emf"

    ElseIf Char$(En-tête#,0,4) = Chr$($89) + "PNG"

        .Typ$ = "png"
        .x& = MakeWord(Byte(En-tête#,18),Byte(En-tête#,19),1)
        .y& = MakeWord(Byte(En-tête#,22),Byte(En-tête#,23),1)

    ElseIf Char$(En-tête#,0,4) = Chr$($D7) + Chr$($CD) + chr$($C6) + Chr$($9A)

        .Typ$ = "wmf"

    EndIf

    Si non .Typ$ = "ico"

        .Anzahl% = .x& And .y&

    EndIf

ENDPROC

Proc Test

    Paramètres Bild$
    Déclarer Bild#
    Cas Bild$ = »:Bild$ = "Africa_satellite_plane.jpg"

    Si FileExists(Bild$)

        Bild# = New(BitmapInfo,Bild$)

        With Bild#

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

        EndWith

        Dispose Bild#

    D'autre

        Imprimer "Fehler",Bild$

    EndIf

    WaitInput

ENDPROC

Test()

Umgestellt sur Lecture qui Werte sur une Bereich statt GetByte.
cela Bild gibt es im Moment ici zum Runterladen:  [...]  7,5mb sur nem langsamen Server - es peux alors quelque chose dauern.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
11.10.2014  
 




Jörg
Sellmeyer
Es volonté encore pas alle jpg-Bilder richtig ausgelesen. cela scheint avec qui Speicherung de EXIF-données trop 1faire trop avons. 98% meiner Bilder volonté mais Schonmal korrekt ausgelesen.
plusieurs 1000 Fichiers volonté dans wenigen Sekunden durchgeschreddert.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
15.10.2014  
 




GDL
Hallöle,

habe justement obigen Code ausprobiert.

XPSE Startet et bricht ensuite beim compilieren sans Fehlermeldung ab.

dans qui xyz.err Dossier steht ensuite:

avec Xprofan ca va zwar unregelmäßig (partiellement mais aussi Abbruch sans Fehlermeldung comment chez XPSE), mais chez chaque jpg Bild wird
BildBreite 160
Bildhöhe 120

ausgegeben.

seulement si je qui Bilder avec Paint verkleinere sur sous 1MB et speichere, volonté qui richtigen Werte angegeben.

je nutze Win 8. Liegt es peut-être daran?

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




Jörg
Sellmeyer
si du mir la fois un paire deiner Bilder envoyons magst, veux je cela volontiers la fois checken.
je hab pas tour weitergearbeitet, c'est pourquoi ist aussi cela Problem avec den EXIF-données pas behoben. Irgendwie suis je là pas weitergekommen.

je hab encore XP, tout autor peux je cela avec W8 pas testen.

quoi cela Problem avec XPSE angeht: en supplément peux je rien dire, weil Je l' pas nutze.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
21.08.2015  
 




GDL
Hallöle,

jo, mach je qui Tage. sommes alle de einem Handy. cela sais je.

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



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

6.200 Views

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

Themeninformationen

cet Thema hat 2 participant:

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


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie