begin process at 2010 02 10 12:45:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Mutimédia

 > 

Image & Vidéo

 > 

Un quickreport en metaFile


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Un quickreport en metaFile

mardi 30 juin 2009 à 17:53:36 | Un quickreport en metaFile

leroukin

Bonjour,

Le but de ma fonction est de générer un JPEG à partir des metafiles contenus dans mon objet QuickReport.

voici la fonction :

procedure TModuleExportMail.ExportToJPEGStream(AReport: TQuickRep; AStream: TStream);
var aMeta             : TMetaFile;
    PageNum,MaxPage : integer;
    AWidth, AHeight   : Integer;
    MonBMP : TBitmap;
    Jpg: TJPEGImage;
    ImageEnProc    :  TImageEnProc;
    Ratio          :  Extended;
    NHeight        :  Integer;
    NewWidth, NewHeight,Oldheight : integer;

begin
     MonBMP := TBitmap.create;
     Jpg := TJPEGImage.Create;
     ImageEnProc := TImageEnProc.Create (nil);
     try
      AReport.PrepareExportMetafile;
      MaxPage := Areport.QRPrinter.PageCount;
      MonBMP.Height := 0;
      Jpg.Performance := jpBestQuality;
      Jpg.CompressionQuality := 90;
      for PageNum := 1 to MaxPage do
       begin
             aMeta := Areport.QRPrinter.GetPage(PageNum);
             if assigned(ameta) then
                begin
                     try
                        Oldheight := MonBMP.Height;
                        MonBMP.PixelFormat := pf24bit;
                        MonBMP.Width := ameta.Width;
                        MonBMP.Height := MonBMP.Height + ameta.Height;
                        MonBMP.Canvas.Draw(0,Oldheight, ameta);
                     finally
                        aMeta.Free;
                     end;
                end;

       end;
     if MonBMP.Width > 0 then
     begin
           NewWidth := 800;
           NewHeight := -1;
           Jpg.Performance := jpBestQuality;
           Jpg.CompressionQuality := 90;
           Ratio := MonBMP.Height/MonBMP.Width;
           NHeight := Round(Ratio * NewWidth);
           ImageEnProc.AttachedBitMap := MonBMP;
           ImageEnProc.Resample(NewWidth, NewHeight, rfMitchell);
           MonBMP.Width := NewWidth;
           MonBMP.Height := NHeight;

           Jpg.Assign(MonBMP);
           Jpg.savetoStream(Astream);
     end;
     finally
            MonBMP.free;
            jpg.free;
            ImageEnProc.Free;
     end;

end;


Comme vous le constater mon but est de récuperer l'image sous une résolution de 800 x YYY afin qu'elle puisse etre facilement exploitable.
cela fonctionne très bien, mais le problème est que la fonction ReSample est super longue et pénalise beaucoup le reste de mon programme. Connaissez vous un moyen d'optimiser, ou une autre moulinette pour mon besoin ?

Cordialement.



Cette discussion est classée dans : end, jpg, height, monbmp, ameta


Répondre à ce message

Sujets en rapport avec ce message

Convertion d'un Jpeg en Bitmap puis stockage dans un tableau [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Convertion d'un Jpeg en Bitmap puis stockage dans un tableau [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Bitmap, tableau de stockage .... [ par dami ] Bonjour a tous. Pour les besoins d'OpenGL, j'ai besoin de transformer mon Jpeg en BMP puis de stocker le BMP sous forme de tableau. J'ai récupéré et a Probleme erreur [ par cricri_b34 ] salut , j'ai fait un programme qui doit crer des composant tout fonctionne bien sauf quand je quitte, la ya plein d'erreur qui apparaisse je comprend Envoye d'un BMP par les composants Indy sur un serveur [ par Francky23012301 ] Salut à tous, J'ai un bmp que je souhaite transferer sur un serveur par les composants Indy. Je vous copie ma source : procedure TForm1.sendstr; var Pb de conversion emf vers jpg de grandes images [ par macpc ] Bonsoir à tous,Je suis confronté au problème suivant lors de la conversion de grandes images emf vers jpg, j'obtiens une erreur endofressources:Po traitement d'une image comment me passer d'un picturedialog ? [ par alex7532 ] Bonjour tout le monde.Le programme ci-dessous traite une image qu'on a précédemment séléctionné dans un TopenPictureDialogmais je souhaiterai que cett HintWindowClass [ par Caribensila ] Salut à tous, L'application que je développe a besoin de deux styles de bulle d'aide différents. Les bulles classiques de Windows, et [Erreur Composant] [ par Bacterius ] Bonsoir, voici un cas fort interessant ... et bizarre. Je prépare un composant graphique descendant de TGraphicControl, une sorte de progressbar pour Message de sauvegarde [ par cincap ] Bonjour à tous,Est t'il possible de mettre un message d'avertissement au cas ou le fichier bmp ou jpg existerait avant de sauvegarder le nouveau fichi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales