begin process at 2012 02 08 17:39:59
  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 Affecter un glyph dans un Boutton. [ par Michel34 ] Salut , j'ai minimise un programme test pour vous expliquer mon souci. Si vous tester leprogramme , j'affecte bien l'image de ma Timagelist dans les


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,264 sec (3)

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