IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Travailler avec TBitmap et des fichiers bmp sous Linux [Lazarus]


Sujet :

Lazarus Pascal

  1. #81
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    2 !

    Toutes mes félicitations !

    Un microscopique problème de compilation, que tu devrais régler avec un {$IFDEF VERSIONxxx}, je l'avais déjà remarqué avec le GifViewer, pas que ça me gène mais s'il doit y avoir des corrections à venir, à force, à chaque coup de F9, bim !, juste pour ça c'est dommage :

    dans le .lpr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    begin
      RequireDerivedFormResource := True;
    ////  Application.Scaled := True;
    et dans umainform.pas ligne 940 et 2 suivantes, .AsString je ne connais pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //  S := S + #13 + #10 + 'Dimension      : ' + FImageDescription.Width.ToString+'x'+ FImageDescription.Height.ToString;
    //  S := S + #13 + #10 + 'Bits par pixel : ' + FImageDescription.BitCount.ToString;
      S := S + #13 + #10 + 'Dimension      : ' + IntToStr(FImageDescription.Width)+'x'+ IntToStr(FImageDescription.Height);
      S := S + #13 + #10 + 'Bits par pixel : ' + IntToStr(FImageDescription.BitCount);
      S := S + #13 + #10;
      S := S + #13 + #10 + 'Transparent    : ' + cBoolStr[FImageDescription.HasAlpha];
      S := S + #13 + #10;
      S := S + #13 + #10 + 'Utilisation Palette de couleur : ' + cBoolStr[FImageDescription.UsePalette];
    //  S := S + #13 + #10 + 'Nombre de couleur dans la palette : '+FImageDescription.PaletteCount.ToString
      S := S + #13 + #10 + 'Nombre de couleur dans la palette : '+IntToStr(FImageDescription.PaletteCount);
    J'avais oublié que t"étais avec une version du Jurrasique !

    Citation Envoyé par Jipété Voir le message
    Sinon, on aurait un ch'tit problème de R et B inversés, on dirait, avec un fichier OS/2 (en arrière-plan ce que je vois dans un viewer) :
    Cool je l'avais pas celle la en format Os/2

    Citation Envoyé par Jipété Voir le message
    Et un qui n'est pas content, avec ses 256 couleurs :
    Petite erreur d'initialisation, du nombre de couleur, c'est pas grand chose (on voit bien que de toutes les manière le nombre est bon dans les infos

    Citation Envoyé par Jipété Voir le message
    J'ai été obligé de rajouter '.zip' à la fin des 2 fichiers, à virer, et tu commences par le .001 pour décompacter.

    Suis absent en début d'aprème.

    Encore bravo !
    Merci ! Pas de soucis
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  2. #82
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Voili voilou premiers tests sous Windows tes 2 fichiers passent bien

    Ce qui est chelou c'est la différence des infos pour le "RedBrickxp256c.Bmp" qui sous windows est bien détecté comme un 8bits. Mais pas sous Linux comme sur ta copie d'écran
    [EDIT] Pour l'erreur qui s'affiche c'est normal, vu que le bmp est bancal (Erreur dans le header)

    Nom : 2019-02-21_131006.jpeg
Affichages : 458
Taille : 93,8 Ko

    Nom : 2019-02-21_131028.jpeg
Affichages : 399
Taille : 128,2 Ko

    Je vais vérifier tout ca dans linux et regarder cette histoire de {$IFDEF Version} cela devrait être réglé quand tu reviendras.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #83
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 718
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 718
    Points : 15 097
    Points
    15 097
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Voili voilou premiers tests sous Windows tes 2 fichiers passent bien
    Ah oui mais moi je suis dans un monde un peu spécial, sinon ça serait trop facile,

    Une question bête :

    comment puis-je facilement accéder aux pixels à partir de ton code ? Je n'ai pas encore creusé, il me faudrait une direction, un pied à l'étrier.

    L'idée c'est d'avoir les pixels un peu comme si je faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for h := 0 to height-1 do
      for w := 0 to width-1 do
        p := pixel(h,w);
    et je peux travailler avec p, lui changer les couleurs, ce genre de choses...

    Merci,

    EDIT : autre chose. Ta fonction FormDropFiles, elle ne serait pas mieux comme ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    procedure TMainForm.FormDropFiles(Sender : TObject; const FileNames : array of String);
    var
       ImageFileName : String;
    Begin
     {   Try
          Screen.Cursor := crHourGlass;
          ImageFileName := '';
          ImageFileName := FileNames[0];
          Caption := ImageFileName;
          BmpViewer.LoadFromFile(ImageFileName);
          //BmpLoader.LoadFromFile(ImageFileName);
        Finally
     
          Memo1.Lines.Clear;
          Memo1.Append(BmpViewer.GetLoader.GetImageDescriptionAsString);
     
          //Memo1.Append(BmpLoader.GetImageDescriptionAsString);
     
          //BmpLoader.FastBitmap.Draw(Self.Canvas,0,0);
          //BmpLoader.FastBitmap.Draw(Self.Canvas,PnlView.ClientRect);
          //BmpViewer.GetLoader.FastBitmap.Draw(Self.Canvas,0,0);
          Screen.Cursor := crDefault;
        End;     }
      Screen.Cursor := crHourGlass;
      ImageFileName := '';
      ImageFileName := FileNames[0];
      Caption := ImageFileName;
      Try
        BmpViewer.LoadFromFile(ImageFileName);
        //BmpLoader.LoadFromFile(ImageFileName);
        Memo1.Lines.Clear;
        Memo1.Append(BmpViewer.GetLoader.GetImageDescriptionAsString);
        //Memo1.Append(BmpLoader.GetImageDescriptionAsString);
     
        //BmpLoader.FastBitmap.Draw(Self.Canvas,0,0);
        //BmpLoader.FastBitmap.Draw(Self.Canvas,PnlView.ClientRect);
        //BmpViewer.GetLoader.FastBitmap.Draw(Self.Canvas,0,0);
      Finally
        Screen.Cursor := crDefault;
      End;
    end;
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #84
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut Mise a jour TBMPViewer
    Je suis de retour, faute à moi pour les fichier BMP OS/2x je n'avais pas testé suffisament sous Linux. Le problème est corrigé

    J'ai même pu corriger un vieux truc qui me tracassait (j'avais un décalage de 4 octets) et la bizarrement mon erreur m'a sauté au yeux et il y avait un petit truc de rien du tout dans la procedure MakeOpaque de TFastBitmap

    Voila pour les tests sous Linux :

    Nom : Screenshot_20190221_155938.jpg
Affichages : 374
Taille : 79,8 Ko

    Nom : Screenshot_20190221_155855.jpg
Affichages : 370
Taille : 60,9 Ko

    Comme on peux le voir sur cette dernière capture sous LINUX l'agrandissement de l'image est lissé
    On le voit clairement avec ton fichier test "3x2x24_vh1.bmp" et si on fait attention la vignette dans l'explorateur est aussi lissé. Je pense qu'il y a moyen d'avoir un zoom non lissé, un paramètre a passé dans le TLazIntfImage avant le passage à la fonction "Canvas.StretchDraw". Le lissage semble être par defaut sous Linux.

    Nom : Screenshot_20190221_160143.jpg
Affichages : 368
Taille : 61,8 Ko

    Nom : 2019-02-21_161001.jpeg
Affichages : 387
Taille : 47,8 Ko

    J'ai également enlevé les "ToString" non présent ta version et j'ai rajouté le {IF LCL_FULLVERSION >= 10800000} dans le lpr. Dis moi si c'est bon ou pas.

    Sinon me reste encore deux trois petit trucs à fignoler et à uniformiser en attendant une version finale que je mettrai sur mon github voila la version mise à jour : TBMPViewer.zip

    Citation Envoyé par Jipété Voir le message
    comment puis-je facilement accéder aux pixels à partir de ton code ? Je n'ai pas encore creusé, il me faudrait une direction, un pied à l'étrier.
    L'utilisation de TFastBitmap est très proche de l'utilisation du TBitmap de Delphi

    1er Cas simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Var
      FastBmp : TFastBitmap;
      BmpLoader : TBMPLoader;
      DstBmp : TBitmap;
      x,y:Integer;
      Col : TColor32;
    begin
      BmpLoader := TBMPLoader.Create;
      BmpLoader.LoadFromFile(FileName);
     
      FastBmp := BmpLoader.FastBitmap.Clone; // On clone, on copie
      For y := 0 FastBmp.Height-1 do
      begin
        For x := 0 FastBmp.Width-1 do
        begin
           Col := FastBmp.GetPixel(x,y);
           Col.Red := 0;
           FastBmp.PutPixel(x,y,col);
        end;
      end;
     
      DstBmp := TBitmap.Create;
      DstBmp := FastBmp.GetBitmap;
      DstBmp.SaveToFile('test.bmp');
      DstBmp.Free;
      FreeAndNil(FastBmp);
      FreeAndNil(BMPLoader);
    end;
    2eme cas on passe par"scanline" et un pointer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Var
      FastBmp : TFastBitmap;
      PColor : PColor32;
      X, Y : Integer;
      // etc....
    begin
       //.....
       Y := 0;
       Repeat
           PColor := FastBmp.GetScanLine(Y);
           X := FastBmp.Width;
           While (X > 0) do
           begin
              PColor^.Red := 0;
              Inc(PColor); // On avance de 1 pixel sur la ligne
              Dec(X);
           end;
       Until (Y > Pred(FastBmp.Height);
        //...
    end;
    Voila après comme tu peux regarder dans la class TFastBitmap les procedure MakeOpaque, SwapRB, et il y a également à dispo entre autre
    - procedure PutPixelBlend(X,Y : Integer; Color : TColor32); - procedure PutImage(Src : TFastBitmap; SrcX, SrcY, SrcWidth, SrcHeight, DstX, DstY : Integer; Mode : TFastBitmapDrawMode);et les procedures ImportFromBitmap et ImportFromRawImage comme leur nom l'indique sont la pour charger des TBitmaps

    De même que TColor32 il y a dedans la fonction "Blend", et on pourrait facilement y ajouter dans la classe (je devrais dire l'enregistrement avancé) d'autres fonctions de transformation comme "Function ToGrayScale : TColor32" par exemple pour transformer une couleur en niveau de gris. Il suffirait alors de l'utiliser comme ceci :
    pour transformer une image entière

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    begin
       //.....
       Y := 0;
       Repeat
           PColor := FastBmp.GetScanLine(Y);
           X := FastBmp.Width;
           While (X > 0) do
           begin
              PColor^ := PColor^.ToGrayScale;
              Inc(PColor); 
              Dec(X);
           end;
       Until (Y > Pred(FastBmp.Height);
        //...
    end;
    Par contre attention les TBitmaps à l'export seront toujours en 32bits (BGRA pour windows et RGBA pour Linux). L'avantage d'utiliser TColor32 c'est que l'on n'a pas besoin de gérer la conversion lors de la compilation d'un projet d'une plateforme à l'autre.
    "Write Once, Compil EveryWhere ! "

    Si tu as d'autres question ou des soucis d'utilisation, je suis là
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #85
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    EDIT : autre chose. Ta fonction FormDropFiles, elle ne serait pas mieux comme ça ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    procedure TMainForm.FormDropFiles(Sender : TObject; const FileNames : array of String);
    var
       ImageFileName : String;
    Begin
     {   Try
          Screen.Cursor := crHourGlass;
          ImageFileName := '';
          ImageFileName := FileNames[0];
          Caption := ImageFileName;
          BmpViewer.LoadFromFile(ImageFileName);
          //BmpLoader.LoadFromFile(ImageFileName);
        Finally
     
          Memo1.Lines.Clear;
          Memo1.Append(BmpViewer.GetLoader.GetImageDescriptionAsString);
     
          //Memo1.Append(BmpLoader.GetImageDescriptionAsString);
     
          //BmpLoader.FastBitmap.Draw(Self.Canvas,0,0);
          //BmpLoader.FastBitmap.Draw(Self.Canvas,PnlView.ClientRect);
          //BmpViewer.GetLoader.FastBitmap.Draw(Self.Canvas,0,0);
          Screen.Cursor := crDefault;
        End;     }
      Screen.Cursor := crHourGlass;
      ImageFileName := '';
      ImageFileName := FileNames[0];
      Caption := ImageFileName;
      Try
        BmpViewer.LoadFromFile(ImageFileName);
        //BmpLoader.LoadFromFile(ImageFileName);
        Memo1.Lines.Clear;
        Memo1.Append(BmpViewer.GetLoader.GetImageDescriptionAsString);
        //Memo1.Append(BmpLoader.GetImageDescriptionAsString);
     
        //BmpLoader.FastBitmap.Draw(Self.Canvas,0,0);
        //BmpLoader.FastBitmap.Draw(Self.Canvas,PnlView.ClientRect);
        //BmpViewer.GetLoader.FastBitmap.Draw(Self.Canvas,0,0);
      Finally
        Screen.Cursor := crDefault;
      End;
    end;
    Ca n'a pas vraiment d'importance, j'avais fait comme ça car, à la base j'ai utilsé directement le TBMPLoader et TFastBitmap (Commentaires que j'ai laissé) pour afficher l'image sur le Canvas de la form et ainsi pour intercepter et lever les exceptions en cas d'erreurs avant de planter le bouzin et afficher l'image seulement en cas de réussite.
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  6. #86
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Une piste pour éviter le lissage lors de l'affichage c'est de paramétrer BmpViewer.Canvas.AntialiasingMode := amOff; . et voir du coté de BmpViewer.Canvas.Interpolation (Unit FPCanvas) pour Linux (GTK2 et QT) car sous Windows l'api GDI ne supporte pas les interpoations. A tester donc.

    Au pire je rajouterai une options dans le "Viewer"

    Autre petite chose dans le LPR il faudra peut-être que faire {$IFDEF LCL_FULLVERSION >= 1080000} au lieu de {$IF...}
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  7. #87
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 718
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 718
    Points : 15 097
    Points
    15 097
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Autre petite chose dans le LPR il faudra peut-être que faire {$IFDEF LCL_FULLVERSION >= 1080000} au lieu de {$IF...}
    Exact, le {$IF...} n'était pas content chez moi :
    bmpviewer.lpr(16,7) Error: Compile time expression: Wanted STRING but got INTEGER at "LCL_FULLVERSION >= 1080000"
    Mais je n'aurais pas pensé qu'un IFDEF puisse fonctionner là.
    Bref, ça c'est fait.

    Bien noté pour l'AntiAliasing, je verrai + tard.
    Merci pour les infos sur l'accès aux pixels, ça aussi, + tard.

    Ce qui m'ennuie, même si ce n'est pas grave, c'est ce fichier redbrick qui me sort la même erreur...

    Mais ne t'embête pas à générer tout un zip, s'il n'y a qu'une ligne ou deux, tu les mets ici et ça ira bien.

    Ah, une petite remarque, quand même,

    Tu as mis plein de lignes en commentaires mais avec 0 explications. Donc on ne sait pourquoi, on ne sait pas ce que ça cache, etc.
    Tu vois le truc ? Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          BmpViewer.LoadFromFile(ImageFileName);
          //BmpLoader.LoadFromFile(ImageFileName);
    Car les noms pour moi portent à confusion, regarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        BmpViewer : TBMPViewer;
        BmpLoader : TBMPImageLoader;
    Pour moi un viewer c'est un machin qui va afficher des images, mais pour ça il faut les charger, donc passer par un ImageLoader sauf que ce qui le concerne est commenté (sauf là, dans la section "public"). C'est pas clair -- pour moi.

    Autre chose : dans les logs, je trouve ça, qui m'ennuie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Informations sur le BitField : 
        - Taille du BitField = 16
    Qui m'ennuie car le mot "BitField" est plutôt réservé au type d'encodage des données.

    Vu comme je le vois dans le mémo, il est plutôt question de pixels, des bytes des pixels, et il me semble que c'est une notion toute lazarusienne à propos de l'organisation du RawImage.Data.
    Et rien à voir avec le code 03 qu'on peut parfois rencontrer à l'adresse 1E :
    Nom : 03.png
Affichages : 365
Taille : 1,7 Ko
    Ici les 1re et 2e lignes dans un éditeur hexa, au bout à droite, ouvert sur un fichier v5 (7C), pf32 (20), compression BI_BITFIELD (03).
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #88
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 852
    Points : 11 285
    Points
    11 285
    Billets dans le blog
    6
    Par défaut
    Bonsoir Jérôme,

    Beau travail ! Je n'ai pas regardé l'ensemble en détail, mais ça a l'air solide...

    Sous CT 6.5 64 Bits sous Windows 10, je n'ai sur ton panel test qu'une seule erreur signalée, pour la mire TV (bmp0_test_image.bmp), pour lequel il signale une erreur de nombre de couleurs de la palette dans le descripteur (0), mais l'ouvre quand même.

    Je testerai plus tard sous Ubuntu.

    [EDIT = je n'ai pas testé les images des répertoires OS2, CardsBmp et bmpSuite-2.5 ; le faudrait-il ?
    NB: le DropFiles ne fonctionne pas, sans que je comprenne pourquoi... J'ai bien mis AllowDropFiles True, mais ça ne suffit pas ; je ne rentre même pas dans l'événement...]
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  9. #89
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 762
    Points : 957
    Points
    957
    Par défaut
    Petite question dont j’attends la réponse avec une impatience certaine, quel taille maximal ta classe peux gérer sur une machine 64 bits ?

  10. #90
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Tu as mis plein de lignes en commentaires mais avec 0 explications. Donc on ne sait pourquoi, on ne sait pas ce que ça cache, etc.
    Tu vois le truc ? Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          BmpViewer.LoadFromFile(ImageFileName);
          //BmpLoader.LoadFromFile(ImageFileName);
    Car les noms pour moi portent à confusion, regarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        BmpViewer : TBMPViewer;
        BmpLoader : TBMPImageLoader;
    Pour moi un viewer c'est un machin qui va afficher des images, mais pour ça il faut les charger, donc passer par un ImageLoader sauf que ce qui le concerne est commenté (sauf là, dans la section "public"). C'est pas clair -- pour moi.
    Le TBMPViewer c'est comme le TImage, c'est un composant visuel
    Le TBMPLoader ben c'est le loader qui charge le fichier bmp dans un TFastBitmap mais sans pouvoir l'afficher tout seul. C'est comme avec les GIFs tu as le TGIFLoader et TGIFViewer

    C'est comme avec le TBitmap, tu peux charger un fichier dedans (Grace au FP"Reader"Bmp ou autres, c'est donc le Loader) et tu peux afficher ce TBitmap avec "Canvas.Draw"


    TBMPViewer = TImage
    TBitmap = TFastBitmap
    TFPReaderBMP / TLazReaderDIB = TBMPLoader


    Citation Envoyé par Jipété Voir le message
    Autre chose : dans les logs, je trouve ça, qui m'ennuie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Informations sur le BitField : 
        - Taille du BitField = 16
    Qui m'ennuie car le mot "BitField" est plutôt réservé au type d'encodage des données.
    C'est exactement ca., c'est bien réservé a l'encodage des données dans le fichier BMP

    Citation Envoyé par Jipété Voir le message
    Vu comme je le vois dans le mémo, il est plutôt question de pixels, des bytes des pixels, et il me semble que c'est une notion toute lazarusienne à propos de l'organisation du RawImage.Data.
    Et rien à voir avec le code 03 qu'on peut parfois rencontrer à l'adresse 1E :
    Pas du tout le "bitfield" est bien une notion Microsoftienne/IBM-ienne. Le bitfield c'est justement comment est codé la couleur d'un pixel Grèce au bitfield tu peux faire tout et n'importe quoi (BGR, RGB, GBR BRG....je ne met pas les alphas)
    Avec le BMP c'est une notion indispensable tu peux très bien avoir un bmp en 32bits par exemple sans que ces informations soient contenues dans le fichier. Il faut alors se référer à la spécification par défaut.

    Regardes ces quelques images de la bmpSuite-2.5
    Le premier nombre représente le nombre de bits par pixel et le second les nombre de bits des masques du bitfield

    Nom : 2019-02-21_210756.jpeg
Affichages : 91
Taille : 25,8 Ko

    Par contre il est clair que les devs de Lazarus ce sont inspiré du format BMP pour le RawImage et l'organisation des pixels (mais mal)


    Pour TFastBitmap le Bitfield ne rentre pas en compte le format c'est simple c'est du 32bits soit BGRA soit RGBA en fonction de l'OS point-barre. Les informations retournées ici sont en rapport avec le fichier BMP UNIQUEMENT et ne sont pas comment je stock les données dans TFastBitmap. C'est la grosse différence avec le système de Lazarus qui mélange tout.

    Citation Envoyé par tourlourou Voir le message
    Bonsoir Jérôme,

    Beau travail ! Je n'ai pas regardé l'ensemble en détail, mais ça a l'air solide...

    Sous CT 6.5 64 Bits sous Windows 10, je n'ai sur ton panel test qu'une seule erreur signalée, pour la mire TV (bmp0_test_image.bmp), pour lequel il signale une erreur de nombre de couleurs de la palette dans le descripteur (0), mais l'ouvre quand même.

    Je testerai plus tard sous Ubuntu.
    Merci Yves
    Ne t'en fait pas les erreurs sont notifiées, en vue de mettre en garde l'utilisateur que le fichier est mal encodé, et charge quand même le fichier car se sont des erreurs minimes. Sinon les erreurs plus grave sont levées sous forme d'exceptions et du coup tu as des boites avec "OK"/"ABORT"

    Citation Envoyé par tourlourou Voir le message
    [EDIT = je n'ai pas testé les images des répertoires OS2, CardsBmp et bmpSuite-2.5 ; le faudrait-il ?
    NB: le DropFiles ne fonctionne pas, sans que je comprenne pourquoi... J'ai bien mis AllowDropFiles True, mais ça ne suffit pas ; je ne rentre même pas dans l'événement...]
    [/QUOTE]

    Peux tu en testé quelques unes, l'avantage surtout dans bmpSuite-2.5 est qu'il y a des fichiers bien tordues (et mal encodés et ou avec des erreurs dans la compression RLE par exemple) et même l'explorateur windows n'ouvrent pas toutes les images de cette suite (certaines sont même mal affichées dans XN-View, alors qu'elle passent ici )

    Par contre bizarre que le dropFiles ne fonctionne pas, il y a peut-être autre chose a actionné dans CT (voir propriété DragMode = automatic)

    Citation Envoyé par der§en Voir le message
    Petite question dont j’attends la réponse avec une impatience certaine, quel taille maximal ta classe peux gérer sur une machine 64 bits ?
    Normalement la limite c'est la RAM (1.5go ca passe, normalement jusqu'a 4Go cela devrait être bon). Je n'ai plus mes fichiers de plus de 5Go pour tester. Mais les fichiers de très grosses tailles devraient se charger (Mais par rapport à mon projet, la classe de gestion des streams ici est simplifiée donc pas sure que cela passe ou si ca passe la vitesse de chargement n'est pas optimisée,.....a tester ).
    Par contre pour l'affichage pas sur que ca s'affiche si l'image est vraiment grande car ici j'utilises les fonctions "Canvas.Draw" et "Canvas.StretchDraw" de Lazarus en direct (Sinon faut modifier le source et ajouter un tampon supplémentaire ).
    Alors que dans mon projet "officiel" j'utilise directement les apis (GDI+/GTK2/QT) et un systeme de buffer (je transfert juste ce qui doit être visible)
    Le "Width" et le "Height" sont des INTEGERS. Comparer à mon projet "officiel" qui est plus évolué, le modèle est plus ou moins le même. Donc voila à tester tu peux déja voir si tu peux créer un TFastBitmap de très grande taille et grâce à la procedure "PutImage" transférer dans un autre TFastBitmap juste la partie à afficher à l'écran.

    Je rajouterai surement la sauvegarde plus tard (j'ai déja la base, cf mon post un peu plus haut dans la discussion)

    Merci

    Bonne soirée
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  11. #91
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    @der§en :

    Je viens de créer un fichier BMP de 64000x18000 en 24 bits j'ai pu le charger donc 64000*18000*4 octets = un peu plus de 4,6 go environ en mémoire) , mais comme je le pensais (il n'a pas pu s'afficher a cause des limitations des fonctions interne de Lazarus
    Pour l'affichage va falloir que tu attendes encore un peu que j'en finisse avec mon projet officiel
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  12. #92
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 852
    Points : 11 285
    Points
    11 285
    Billets dans le blog
    6
    Par défaut
    Toujours sous CT 6.5 64 Bits sous Windows 10 :
    - une erreur bloquante "signature BMP invalide : @" pour les fichiers DIAMOND.BMP, HEART.BMP, MASK.BMP, SPADE.BMP du répertoire CARDBMPS ;
    - une erreur non bloquante (erreur nb couleurs palette) pour le fichier 11Bios13.bmp du répertoire OS2.
    Pour le répertoire bmpSuite-2.5/b ne passent pas : badbitcount, badheadersize, badrle (envoie le programme au tapis, mais pas les autres mauvais RLE), reallybig (EOutOfMemory) ; la suite plus tard !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  13. #93
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 718
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 718
    Points : 15 097
    Points
    15 097
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    - une erreur bloquante "signature BMP invalide : @" pour les fichiers DIAMOND.BMP, HEART.BMP, MASK.BMP, SPADE.BMP du répertoire CARDBMPS ;
    - une erreur non bloquante (erreur nb couleurs palette) pour le fichier 11Bios13.bmp du répertoire OS2.
    Sortent d'où, ces fichiers ?

    Citation Envoyé par tourlourou Voir le message
    Pour le répertoire bmpSuite-2.5/b ne passent pas : badbitcount, badheadersize, badrle (envoie le programme au tapis, mais pas les autres mauvais RLE), reallybig (EOutOfMemory) ; la suite plus tard !
    Ah là je sais !
    /b comme BAD ! Les fichiers dans ce dossier sont bad.
    /g c'est les Good,
    /q on se pose la Question
    /x c'est une photo cochonne, nan, on ne sait pas, quand on le regarde à l'éditeur hexa, sa signature BM n'est pas en 00 01 mais en 0E 0F...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #94
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Bonjour, bonjour

    Citation Envoyé par tourlourou Voir le message
    Toujours sous CT 6.5 64 Bits sous Windows 10 :
    - une erreur bloquante "signature BMP invalide : @" pour les fichiers DIAMOND.BMP, HEART.BMP, MASK.BMP, SPADE.BMP du répertoire CARDBMPS ;
    - une erreur non bloquante (erreur nb couleurs palette) pour le fichier 11Bios13.bmp du répertoire OS2.
    Pour le répertoire bmpSuite-2.5/b ne passent pas : badbitcount, badheadersize, badrle (envoie le programme au tapis, mais pas les autres mauvais RLE), reallybig (EOutOfMemory) ; la suite plus tard !

    Bon ben tout est normal la gestion des erreurs n'est pas trop mauvaise
    A part le BadRLE sous windows, qui me renvoie "Données de la compression RLE 8 Bits corrompues" (normal c'est BadRLE), il s'affiche quand même.

    Les erreurs qui s'affichent dans ma fenêtre d'erreur renvoyées par le loader, permette juste d'avertir l'utilisateur qu'il est en face d'un fichier mal encodé. Mais le loader gère ces différentes erreurs et corrige en fonction pour permettre l'affichage.
    Ces erreurs s'affiche car j'ai attaché l'evenement "OnLoadError" dans l'application BmpViewer.OnLoadError := @DoOnBitmapLoadError; Par contre je le concède "ATTENTION ! Des erreurs se sont produites lors du chargement de l'image" peut-être mal interprété car ce sont des erreurs de "seconde zone"

    Citation Envoyé par Jipété Voir le message
    Sortent d'où, ces fichiers ?
    De ma suite BMP-ImageTestSuite

    Citation Envoyé par Jipété Voir le message
    Ah là je sais !
    /b comme BAD ! Les fichiers dans ce dossier sont bad.
    /g c'est les Good,
    /q on se pose la Question
    /x c'est une photo cochonne, nan, on ne sait pas, quand on le regarde à l'éditeur hexa, sa signature BM n'est pas en 00 01 mais en 0E 0F...
    C'est ça !

    b = bad (Erreur d'encodage dans les en-tête ou donnée) mais n'empêche pas l'affichage (sauf reallybig, Badbitcount, et badheaderwidth)
    g = good
    q = mauvais encodage ou fichiers "exotique" hors norme
    x = mauvais encodage dans les en-têtes (impossible à afficher)
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  15. #95
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Juste pour rire j'ai fait un TImage VS TBitmapViewer TImageVsTBmpViewer.zip

    Décompressez le projet dans un sous-dossier du répertoire "Demos" de TBMPViewer

    A ma gauche TImage et ma droite TBMPViewer
    1,2,3 Ding, ding ding, c'est parti ! testez ! (Comparez les infos remontés de l'un et l'autre dans les Mémos et faites attention à la couleur de fond du TImage)

    Nom : 2019-02-22_090248.jpeg
Affichages : 368
Taille : 224,9 Ko

    et ce n'est que le début
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  16. #96
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 718
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 718
    Points : 15 097
    Points
    15 097
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    A ma gauche TImage et ma droite TBMPViewer
    1,2,3 Ding, ding ding, c'est parti ! testez ! (Comparez les infos remontés de l'un et l'autre dans les Mémos et faites attention à la couleur de fond du TImage)
    Tout est dit !

    Depuis le temps qu'on râbachait qu'il y a des soucis dans le graphisme...
    Faudrait leur envoyer ta copie d'écran.

    Et si tu leur mets du code, pense à corriger ça, dans le lpr !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      {$IFDEF LCL_FULLVERSION >= 1080000}
      RequireDerivedFormResource := True;
      Application.Scaled := True;
      {$ENDIF}
      Application.Scaled := True; // bim !


    Ah tiens, j'ai récupéré ta suite (55 Mo, ouch !), tu as mis marbles.bmp à la racine, mais c'est un os2 !
    En plus, nous n'avons pas les mêmes fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bm : 4 276 576 bytes
    jp : 4 264 288 bytes
    Le mien je n'y ai absolument pas touché (d'où son nom en majuscules, sauf "_os2" que j'ai rajouté pour m'y retrouver) et regarde la copie d'écran (réduite de moitié) : le mien derrière, le tien devant.
    Nom : compar_marbles.png
Affichages : 361
Taille : 91,7 Ko
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #97
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message

    Et si tu leur mets du code, pense à corriger ça, dans le lpr !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      {$IFDEF LCL_FULLVERSION >= 1080000}
      RequireDerivedFormResource := True;
      Application.Scaled := True;
      {$ENDIF}
      Application.Scaled := True; // bim !
    Citation Envoyé par Jipété Voir le message
    Ah tiens, j'ai récupéré ta suite (55 Mo, ouch !), tu as mis marbles.bmp à la racine, mais c'est un os2 !
    En plus, nous n'avons pas les mêmes fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bm : 4 276 576 bytes
    jp : 4 264 288 bytes
    Le mien je n'y ai absolument pas touché (d'où son nom en majuscules, sauf "_os2" que j'ai rajouté pour m'y retrouver) et regarde la copie d'écran (réduite de moitié) : le mien derrière, le tien devant.
    55 Mo et encore je peux pas mettre mes gros BMP sur le serveur

    Oui j'avais remarqué hier pour Marble

    En passant ton message dans https://www.developpez.net/forums/d1...phisme-pointu/ je l'ai bien reçu par mail, mais il n'a pas été pris en compte. J'ai eu quelques soucis aussi ce matin sur DVP. Je pense qu'ils étaient entrain de faire des MAJ

    @Dersen : Bonne nouvelle ! en faisant quelques modifs (sans passer par les routines de Lazarus, en utilisant un TFastBitmap pour un stretch à la mano et en utilisant directement les API de Windows) j'ai pu afficher le bitmap en 64000x18000 du logo de firefox que j'ai mal traité en le redimensionnant à cette dimension (donc si il est aplatie c'est normal )

    Nom : 2019-02-22_125812.jpeg
Affichages : 468
Taille : 60,8 Ko

    Bonne fin de journée
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  18. #98
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 718
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 718
    Points : 15 097
    Points
    15 097
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    En passant ton message dans https://www.developpez.net/forums/d1...phisme-pointu/ je l'ai bien reçu par mail, mais il n'a pas été pris en compte.
    L'ai supprimé juste après l'avoir posté : me suis rendu compte que la boulette était dans mon camp...

    Citation Envoyé par BeanzMaster Voir le message
    J'ai eu quelques soucis aussi ce matin sur DVP.
    Pas que toi ! Misère noire, ce matin,

    Citation Envoyé par BeanzMaster Voir le message
    en utilisant un TFastBitmap
    Le TFastBitmap qu'on trouve là ?
    D'après ce post, il n'a de Fast que le nom,
    Citation Envoyé par forum_freepascal
    it is just as fast as a normal bitmap, because that works like that...
    Je voulais d'ailleurs te poser la question après avoir regardé ton code, mais je n'ai pas eu le temps, ça m'a fait "ding dong !" donc je te la pose : tu l'utilises dans ton composant ?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  19. #99
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par Jipété Voir le message
    L'ai supprimé juste après l'avoir posté : me suis rendu compte que la boulette était dans mon camp...




    Citation Envoyé par Jipété Voir le message
    Le TFastBitmap qu'on trouve là ?
    D'après ce post, il n'a de Fast que le nom,
    Non ce n'est pas celui que l'on trouve sur ces pages (qui ont été mise à jour à ce que j'ai pu voir) Mais le fonctionnement est quasi identique. Le TFastBitmap de mon unité uFastBitmap est un peu différent sur certains points et dans le TGifViewer et TBmpViewer, ce n'est qu'un version simplifié de la classe de mon projet originel.

    A la base de ma classe, tout avait commencé avec notre discussion ici et surtout le lien que tu avais donné à cette adresse

    Citation Envoyé par Jipété Voir le message

    Je voulais d'ailleurs te poser la question après avoir regardé ton code, mais je n'ai pas eu le temps, ça m'a fait "ding dong !" donc je te la pose : tu l'utilises dans ton composant ?
    Oui la classe TFastBitmap (dqns l'unit uFastBitmap) est bien évidemment utilisée dans le compo TBMPLoader, c'est dans le TFastBimap qu'est chargé l'image.

    Bon WE
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  20. #100
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 852
    Points : 11 285
    Points
    11 285
    Billets dans le blog
    6
    Par défaut
    @Jérôme : je n'ai pas (encore ?) bien compris comment modifier ton code pour automatiser les tests en parcourant une arborescence de fichiers et enregistrant le succès ou l'erreur d'ouverture...
    Certaines erreurs (critiques, avec badbitcount.bmp par exemple) affichent une boîte mais ne remontent pas au Viewer dont la CallBack OnBitmapLoadError n'est pas déclenchée ?
    Les erreurs permettant quand même l'affichage remontent apparemment, mais peuvent être difficiles à synthétiser : badrle.bmp, par exemple, avec 106580 erreurs identiques 'Données de la compression RLE 8 Bits corrompues'.
    Comment savoir si succès autrement qu'en le supposant ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

+ Répondre à la discussion
Cette discussion est résolue.
Page 5 sur 10 PremièrePremière 123456789 ... DernièreDernière

Discussions similaires

  1. Déplacer des fichiers Excel sous Windows avec SAS
    Par Antoun dans le forum Outils BI
    Réponses: 6
    Dernier message: 19/11/2009, 17h05
  2. [Vxi] liens avec des fichiers .jpg, bmp, ou gif
    Par chendo dans le forum Designer
    Réponses: 1
    Dernier message: 14/10/2009, 09h48
  3. Gestion des fichiers users sous linux
    Par darkvodka dans le forum C++
    Réponses: 2
    Dernier message: 29/09/2007, 19h04
  4. Créer et utiliser des fichiers excel sous linux
    Par cronos6 dans le forum Zope
    Réponses: 2
    Dernier message: 02/06/2006, 09h14
  5. Lire des fichiers iso sous linux
    Par wodel dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 28/11/2005, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo