Форум: "KOL";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
ВнизКак конвертировать JPEG в BMP ? Найти похожие ветки
← →
Владимир (2004-06-28 00:00) [0]Может кто подскажет, как в KOL конвертировать JPEG файл в BMP
← →
Dimaxx (2004-06-28 00:49) [1]
var
// Либо сразу работаем с JPG.Bitmap
JPG: PJPEG;
BMP: PBitmap;
...
JPG:=NewJPEG;
JPG.LoadFromFile("test.jpg");
BMP:=NewBitmap(0,0);
BMP.Assign(JPG.Bitmap);
JPG.Free;
...
← →
Igit (2004-07-06 11:15) [2]Я делал так:
в Uses добавь Ole2 и OleCtl;
Функцией LoadIPic ты можешь загрузить файл src в IPicture, а
процедурой convert сразу конвертировать. Сразу хочу задать вопрос мастерам - оптимально ли написана Convert, а тол я задним местом чую, что можно было проще (ну может не проще - но экономней к ресурсам)?Function LoadIPic(src : string;var IPict:IPicture) : boolean;
var
_hFile : THANDLE;
szFile : string;
dwFileSize : DWORD;
dwBytesRead : DWORD;
bRead : BOOL;
IStm: IStream;
_hGlobal : HGLOBAL;
pvData : Pointer;
begin
Result := true;
szFile:=src;
// open file
_hFile :=CreateFile(PChar(szFile), GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
// get file size
dwFileSize := GetFileSize(_hFile, NIl);
pvData := NiL;
// alloc memory based on file size
_hGlobal := GlobalAlloc(GMEM_MOVEABLE, dwFileSize);
if _hGlobal = 0 then
begin
//Could not allocate memory for image
CloseHandle(_hFile);
Result := false;
exit;
end;
pvData := GlobalLock(_hGlobal);
if pvData = NIL then
begin
//Could not lock memory for image
GlobalUnlock(_hGlobal);
CloseHandle(_hFile);
Result := false;
exit;
end;
dwBytesRead := 0;
// read file and store in global memory
bRead := ReadFile(_hFile, pvData^, dwFileSize, dwBytesRead, NIL);
GlobalUnlock(_hGlobal);
CloseHandle(_hFile);
if not bRead then
begin
//Could not read file
Result := false;
exit;
end;
istm := NiL;
// create IStream* from global memory
CreateStreamOnHGlobal(_hGlobal, TRUE, istm);
OleLoadPicture(istm, dwFileSize, FALSE, IID_IPicture, IPict);
GlobalUnlock(_hGlobal);
GlobalFree(_hGlobal);
end;
==============================Procedure Convert(src, dest : string);
var
IPict:IPicture;
oh : OLE_HANDLE;
PBmp : PBitmap;
begin
if not LoadIPic(src, IPict) then exit;
PBmp := NewBitmap(0, 0);
Ipict.get_Handle(oh);
PBmp.Handle := oh;
// изображение 32 битное
PBmp.PixelFormat := pf32bit;
// сохраняем
PBmp.SaveToFile(dest);
// все очищаем
Pbmp.Free;
IPict.Release();
end;
← →
Igit (2004-07-06 11:22) [3]Кстати, эти функции загружают и конвертируют и GIF, JPEG, JPG, ICO, WMF, EMF
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.059 c