![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
JPEG to BMP [D7, WinXP]
Raki © (2004-01-05 21:54:00)Имеется файл в формате JPEG. Или вариант 2- файл JPEG в ресурсах программы. Его нужно сохранить как BMP файл.
Кто-нибудь может подсказать готовую функцию на WinApi?
Raki (2004-01-24 00:27:00) [1]Большущий тебе Thanks. Извини, что не ответил раньше: не мог.
Igit (2004-01-12 22:15:00) [2]в секцию uses добавь Ole2, OleCtl;
Igit (2004-01-12 22:11:00) [3]Давай я тебе вышлю рабочий пример
Raki (2004-01-12 19:41:00) [4]Упс. Igit, я немного не смыслю на столь высоком уровне программирования: не мог бы ты мне объяснить, что мне нужно еще дописать в код программы, чтобы не появлялось мессаг,типа:
Undeclared Identifer:'IPicture'
Undeclared Identifer:'IStream'
Undeclared Identifer:'CreateStreamOnHGlobal' и т.д
Igit (2004-01-11 17:23:00) [5]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;
PBmp.SaveToFile(dest);
Pbmp.Free;
IPict.Release();
end;
марсианин (2004-01-08 22:42:00) [6]на АПИ никак хотя это кажется странным...
можно использовать всякие ДЛЛ-ки всяких производителей
напр Intel jpeg library (пример см. FastLIB на DelphiGFX), www.ijg.org
VMcL (2004-01-08 17:31:00) [7]>>Delphi5.01 © (07.01.04 10:26) [2]
Напомню: " готовую функцию на WinApi"
Delphi5.01 (2004-01-07 10:26:00) [8]Gotovoi funkcii net, no est metod, mne kajetsa vam prosto nado perevesti Jpeg fail v bmb (vozmojno nado progai ego redaktirovat, a jpeg delphi ne mojet redaktirovat)
Vot kod kotori eto sdelaet ochen bisto (dopustimi obratnaia konvertacia)
var
BitMap: TBitMap;
JpegImage: TJPEGImage;
begin
JpegImage:=TJPEGImage.Create;
JpegImage.LoadFromFile('pic.jpg');
BitMap:=TBitMap.Create;
BitMap.Assign(JpegImage);
BitMap.SaveToFile('pic.bmp');
BitMap.Free;
JpegImage.Free;
end;
Jelau udachi
VMcL (2004-01-06 16:59:00) [9]Готовой функции нет.