Источник: pcnext
Darkmaster
Сегодня мы с вами поговорим о том как с помощью Делфи можно конвертировать различные изображения из одного формата в друго. Конечно же у вас всех есть AcDSee, XNView и прочие проги решающие данные проблемы, но вдруг вы решили написать такую же. Конечно я думаю, что в коде который я вам предоставлю разбиратся будет не каждый, но это и не надо, просто используйте его как шаблон для решения ваши задач. Ну что же начнем. Для начала конвертируем BMP в EMF.
BMP to EMF:
function bmp2emf( const SourceFileName: TFileName): Boolean; 
var 
Metafile: TMetafile; 
MetaCanvas: TMetafileCanvas; 
Bitmap: TBitmap; 
begin 
Metafile := TMetaFile.Create; 
try 
Bitmap := TBitmap.Create; 
try 
Bitmap.LoadFromFile(SourceFileName); 
Metafile.Height := Bitmap.Height; 
Metafile.Width := Bitmap.Width; 
MetaCanvas := TMetafileCanvas.Create(Metafile, 0 ); 
try 
MetaCanvas.Draw( 0 , 0 , Bitmap); 
finally 
MetaCanvas.Free; 
end ; 
finally 
Bitmap.Free; 
end ; 
Metafile.SaveToFile(ChangeFileExt(SourceFileName, '.emf' )); 
finally 
Metafile.Free; 
end ; 
end ; 
Используем функцию так:
procedure TForm1.Button1Click(Sender: TObject); 
begin 
bmp2emf( 'C:\TestBitmap.bmp' ); 
end ;
Теперь один из самых популярный и нужных способов.
BMP to Jpeg:
uses 
Jpeg, ClipBrd;
... 
procedure TfrmMain.ConvertBMP2JPEG; 
// converts a bitmap, the graphic of a TChart for example, to a jpeg 
var 
jpgImg: TJPEGImage; 
begin 
// copy bitmap to clipboard 
chrtOutputSingle.CopyToClipboardBitmap; 
// get clipboard and load it to Image1 
Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap, 
ClipBoard.GetAsHandle(cf_Bitmap), 0 ); 
// create the jpeg-graphic 
jpgImg := TJPEGImage.Create; 
// assign the bitmap to the jpeg, this converts the bitmap 
jpgImg.Assign(Image1.Picture.Bitmap); 
// and save it to file 
jpgImg.SaveToFile( 'primer.jpg' ); 
end ;
BMP to WMF:
procedure ConvertBMP2WMF 
( const BMPFileName, WMFFileName: TFileName); 
var 
MetaFile : TMetafile; 
Bitmap : TBitmap; 
begin 
Metafile := TMetaFile.Create; 
Bitmap := TBitmap.Create; 
try 
Bitmap.LoadFromFile(BMPFileName); 
with MetaFile do 
begin 
Height := Bitmap.Height; 
Width := Bitmap.Width; 
Canvas.Draw( 0 , 0 , Bitmap); 
SaveToFile(WMFFileName); 
end ; 
finally 
Bitmap.Free; 
MetaFile.Free; 
end ; 
end ; 
Использование: 
ConvertBMP2WMF( 'c:\mypic.bmp' , 'c:\mypic.wmf' );
CUR to BMP:
procedure TForm1.Button1Click(Sender: TObject); 
var 
hCursor: LongInt; 
Bitmap: TBitmap; 
begin 
Bitmap := TBitmap.Create; 
Bitmap.Width := 32 ; 
Bitmap.Height := 32 ; 
hCursor := LoadCursorFromFile( 'test.cur' ); 
DrawIcon(Bitmap.Canvas.Handle, 0 , 0 , hCursor); 
Bitmap.SaveToFile( 'test.bmp' ); 
Bitmap.Free; 
end ;
ICO to BMP:
Var 
Icon : TIcon; 
Bitmap : TBitmap; 
begin 
Icon := TIcon.Create; 
Bitmap := TBitmap.Create; 
Icon.LoadFromFile( 'c:\picture.ico' ); 
Bitmap.Width := Icon.Width; 
Bitmap.Height := Icon.Height; 
Bitmap.Canvas.Draw( 0 , 0 , Icon); 
Bitmap.SaveToFile( 'c:\picture.bmp' ); 
Icon.Free; 
Bitmap.Free; 
end ;
JPEG to BMP:
uses 
JPEG; 
...
procedure JPEGtoBMP( const FileName: TFileName); 
var 
jpeg: TJPEGImage; 
bmp: TBitmap; 
begin 
jpeg := TJPEGImage.Create; 
try 
jpeg.CompressionQuality := 100 ; {Default Value} 
jpeg.LoadFromFile(FileName); 
bmp := TBitmap.Create; 
try 
bmp.Assign(jpeg); 
bmp.SaveTofile(ChangeFileExt(FileName, '.bmp' )); 
finally 
bmp.Free 
end ; 
finally 
jpeg.Free 
end ; 
end ;
Вот такие вот шаблоны. Используйте на здоровье! 
Ссылки по теме