cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 2009
-
15 janv. 2007 à 13:54
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 2009
-
17 janv. 2007 à 19:23
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 fichier.
Voici le code que j'utilise :
procedure TForm1.BenregistrerClick(Sender: TObject);
var
nomfich : string;
ext : string;
JP : TJPEGImage;
begin
if savepicturedialog1.execute then
begin
ext :=uppercase(extractfileext(savepictureDialog1.FileName)); if Not ((ext '.BMP') or (ext '.JPG')) then
begin
showmessage('L''extension du fichier n''est pas correcte, soit en jpg ou en bmp');
exit;
end;
if ext = '.BMP' then
image1.picture.savetofile(savepictureDialog1.FileName)
else
if ext = '.JPG' then
begin
JP := TJPEGImage.Create; try
JP.CompressionQuality := 90;
JP.ProgressiveEncoding := false;
// JP.ProgressiveEncoding := true; au choix
JP.Assign(image1.picture.bitmap);
JP.SaveToFile(savepictureDialog1.FileName); // enregistrement
finally
JP.Free;
end;
end;
end;
end;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 15 janv. 2007 à 23:42
tiens y'a beaucoup plus court et aussi un exemple de comment ajouter des formats a la compilation ce qui peut etre pas mal quand on diffuse la source... :
{ -- use PNG format -- remove/insert double-slash}
{//$DEFINE SAVEPNG}
{$IFDEF SAVEPNG}
{ -- use PNG with PNGImage -- remove/insert double-slash}
{//$DEFINE PNGLIB1}
{ -- use PNG with zPNG -- remove/insert double-slash}
{//$DEFINE PNGLIB2}
{$ENDIF}
{$IFDEF SAVEPNG}
{$IFDEF PNGLIB1}
{$MESSAGE 'La prise en charge du format PNG est activée avec PNGImage.'}
{$ELSE}
{$IFDEF PNGLIB2}
{$MESSAGE 'La prise en charge du format PNG est activée avec zPNG.'}
{$ELSE}
{$MESSAGE warn 'La prise en charge du format PNG est activée avec une librairie inconnue.'}
{$ENDIF}
{$ENDIF}
{$ELSE}
{$MESSAGE warn 'La prise en charge du format PNG est Désactivée.'}
{$ENDIF}
procedure TForm1.Button1Click(Sender: TObject);
begin
with SavePictureDialog1 {or SaveDialog1}do begin
Filter := 'Bitmap|.bmp|Jpeg|.jpg'{$IFDEF SAVEPNG}+'|Png|.png'{$ENDIF};
DefaultExt := '.bmp';
if execute then
case FilterIndex of
1 : with TBitmap.Create do
try
Assign(image1.picture.Graphic);
PixelFormat := pf24bit;
SaveToFile(ChangeFileExt(FileName,'.bmp'));
finally
Free;
end;
2 : with TJPEGImage.Create do
try
CompressionQuality := 80; {75..85 : best ratio Size/Quality}
ProgressiveEncoding := True; {True : good for web or slow computer}
Assign(image1.picture.bitmap);
SaveToFile(ChangeFileExt(FileName,'.jpg'));
finally
Free;
end;
{$IFDEF SAVEPNG}
{$IFDEF PNGLIB1}{use PNGImage lib}
3 : with TPNGObject.Create do
try
Assign(image1.picture.bitmap);
CompressionLevel := 9; {9 : best quality but slow at hell}
InterlaceMethod := imNone;
Filters := [pfAverage];
Transparent := false;
RemoveTransparency;
SaveToFile(ChangeFileExt(FileName,'.png'));
finally
Free;
end;
{$ELSE}
{$IFDEF PNGLIB2}{use zPNG lib}
3 : with TPNGImage.Create do
try
Assign(image1.picture.bitmap);
CompressionLevel := clBest;
PixelFormat := pf24bit;
SaveToFile(ChangeFileExt(FileName,'.png'));
finally
Free;
end;
{$ELSE}{use Unknow/Custom PNG lib}
3 : with {INSERT NAME OF YOUR CUSTOM PNG CLASS HERE}.Create do
try
{INSERT PROPERTIES/PARAMETERS OF YOUR CUSTOM PNG CLASS HERE}
SaveToFile(ChangeFileExt(FileName,'.png'));
finally
Free;
end;
{$ENDIF}
{$ENDIF}
{$ENDIF}
cincap
Messages postés460Date d'inscriptiondimanche 5 décembre 2004StatutMembreDernière intervention 6 avril 20092 16 janv. 2007 à 19:18
Bonsoir Foxi,
Merci pour ton exemple, comme le png ne fonctionne pas avec cette source, je suppose qu'il faut ajouter à ma librairie un composant (png), je travaille sur D6 et je n'ai jamais réussi à installer celui que j'avais.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 17 janv. 2007 à 00:08
en fait, tu peu copier les code directement, tu verras qu'a la compilation une librairie PNG n'est pas necessaire puisque le format est desactivé grace aux conditions de compilations.
{ -- use PNG format -- remove/insert double-slash}
{//$DEFINE SAVEPNG}
{$IFDEF SAVEPNG}
{ -- use PNG with PNGImage -- remove/insert double-slash}
{//$DEFINE PNGLIB1}
{ -- use PNG with zPNG -- remove/insert double-slash}
{//$DEFINE PNGLIB2}
{$ENDIF}
par contre si je fait :
{ -- use PNG format -- remove/insert double-slash}
{$DEFINE SAVEPNG}
{$IFDEF SAVEPNG}
{ -- use PNG with PNGImage -- remove/insert double-slash}
{$DEFINE PNGLIB1}
{ -- use PNG with zPNG -- remove/insert double-slash}
{//$DEFINE PNGLIB2}
{$ENDIF}
la il m'en faudrat une ...
<hr size="2" width="100%" />Croc (click me)
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 17 janv. 2007 à 00:09
ah j'oubliais, l'avantage de cette methode c'est que mis a part la taille de la source, la taille de l'executable ne serat pas plus elevée avec le surplus de code.
c'est un bon trucs a savoir donc.
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 17 janv. 2007 à 17:26
de rien, en fait, tu as deux lib PNG assé connue : zPNG et PNGImage.
niveau qualitée, je crois qu'elles sont assés proche.
je pense que tu as bien compris l'interet des directives de compilations, c'est vraiment un plus a connaitre et peu de source en parle.
a vrai dire meme, on ne doit etre que 2 ou 3 sur DelphiFr a les manipuler....
mais quand on vois la souplesse que ça ajoute a un source, c'est un peu idiot de passer a coter.
bien sur comme tu peu le voir les possibilitées de la solution que je t'ai donner sont quasiment infinie.
on peu trés bien utiliser la GDI normal et les lib BMP/JPG par defaut, ou utiliser d'autre lib comme la GDI+ ou DirectX ou OpenGL etc.
Tu n'etait par contre pas obliger d'installer une lib PNG, mais c'est aussi un plus a avoir dans delphi, puisque tout compte fait, c'est un format courrant trés utilisé.
un logiciel de traitement d'image devrait toujours posseder ces trois formats de base BMP, JPG, PNG, c'est le minimum.
aprés, on peu aussi ajouter un support PCX, TIFF et TARGA qui sont les 3 formats qui viennent naturellement a la suite.