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

Composants VCL Delphi Discussion :

Problème de dépassement de la capacité d'un TImage


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Problème de dépassement de la capacité d'un TImage
    Malgré toutes mes recherches sur le sujet je n'arrive pas à trouver une solution:

    Je dois recomposer une seule image jpg à partir de plusieurs images qui s'assemblent comme un puzzle. Le but est de sauvegarder cette grande image.
    Je ne veux pas diminuer la taille pour ne pas perdre de qualité.

    Je recopie toutes les images sur un TImage en utilisant la procedure Draw(X, Y: Integer; Graphic: TGraphic) et ensuite je sauvegarde l'image en utilisant la procedure SaveToFile(const FileName: string).

    Cela ne fonctionne plus à partir d'une certaine taille.
    Comment résoudre ce problème ?

    Des logiciels comme Photoshop travaillent avec des tailles bien supérieures sans problème...

  2. #2
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut gestion d'un TIMAGE de grande taille
    Quelle est la taille de ton image cible ?
    J' ai essayé de faire quelque chose qui ressemble à ton besoin : je charge des fragemnts de photos JPG dans un bitmap 7000 X 5000, pour faire un pêle-mêle.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    On peut considérer un carré de 5888 pixels de côté, soit 23 rangées de 23 images, chaque image faisant 256 pixels de côté.

    J'utilise deux TImages : un grand que je dimensionne avant et un petit de 256x256 qui me sert d'intermédiaire pour copier les images une à une sur le grand.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For x:=0 to 22 do
        begin
          For y:=0 to 22 do
          begin
            GrandeImage.Canvas.Draw(x*256,y*256,PetiteImage);
          end;
        end;
    La procedure fonctionne pour une taille plus petite. J'ai toujours le message EOutOfResources à partir d'une certaine taille.
    Je pense que la limite du Timage est atteinte.

  4. #4
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut objet Timage
    J'ai été confronté au même problème.
    cf mon message du 19/12 17h27
    Le premier qui a le réponse, il prévient l'autre
    A+

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'ai posé la question sur le forum news.delphinaute.be et j'ai eu la réponse intéressante suivante :

    Bien oui et ton problème n'est pas un problème de la Vcl mais une
    limitation de Windows, le mieux c'est d'écrire directement le fichier
    toi même, il suffit d'y enregister le header d'un bmp et ensuite d'y
    enregister pixel par pixel...

    Un exemple : http://delphi.about.com/od/graphics/l/aa101803a.htm

    Merci Vinc

  6. #6
    Candidat au Club
    Inscrit en
    Février 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Effectivement, cela semble intéressant.
    Le problème dans mon cas, vient du fait que je veuille en profiter pour faire un agrandissement de la petite image à importer : dans ce cas, je ne sais pas comment gérer cela pixel par pixel.

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Avril 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Pourquoi cherches tu à dépasser la capacité du TImage ? Tu pourrais agrandir en restant dans les limites ?
    Pour la création d'un bitmap pixel par pixel je vais bosser le sujet, je ne pense pas que ce soit si difficile à faire que cela. Si j'arrive à des choses intéressantes je t'envoie les sources.

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Avril 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    ça marche quand tu diminues le PixelFormat :

    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ImageBMP, GrandBMP  : TBitmap;
      x,y:integer;
    begin
      ImageBMP := TBitmap.Create;
      GrandBMP := TBitmap.Create;
      ImageBMP.PixelFormat := pf24bit;
      GrandBMP.PixelFormat := pf24bit;
      try
        ImageBMP.Assign(Capture.Picture.Graphic);
     
        GrandBMP.Width:=26*256;
        GrandBMP.Height:=26*256;
     
        For x:=0 to 25 do
        begin
          For y:=0 to 25 do
            GrandBMP.Canvas.Draw(x*256,y*256,ImageBMP);
        end;
     
        GrandBMP.SaveToFile('C:\Original.bmp');
      finally
        GrandBMP.Free;
        ImageBMP.Free
      end;
    end;
    Bonnes fêtes de fin d'année

Discussions similaires

  1. [XL-2010] Problème de dépassement de capacité
    Par Tiviia dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/03/2013, 16h56
  2. Problème de dépassement de capacité
    Par nicolav dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/08/2009, 08h05
  3. Problème de dépassement de capacité
    Par moilou2 dans le forum VBA Access
    Réponses: 31
    Dernier message: 18/06/2008, 16h14
  4. [VBA-E] Problème de dépassement de capacité sous Excel
    Par Nicolas67 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2006, 10h36
  5. Réponses: 11
    Dernier message: 28/12/2004, 16h15

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