Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

JPEG to BMP   Найти похожие ветки 

 
Raki   (2004-01-05 21:54) [0]

Имеется файл в формате JPEG. Или вариант 2- файл JPEG в ресурсах программы. Его нужно сохранить как BMP файл.
Кто-нибудь может подсказать готовую функцию на WinApi?


 
VMcL ©   (2004-01-06 16:59) [1]

Готовой функции нет.


 
Delphi5.01 ©   (2004-01-07 10:26) [2]

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-08 17:31) [3]

>>Delphi5.01 ©  (07.01.04 10:26) [2]

Напомню: "готовую функцию на WinApi"


 
марсианин ©   (2004-01-08 22:42) [4]

на АПИ никак хотя это кажется странным...
можно использовать всякие ДЛЛ-ки всяких производителей
напр Intel jpeg library (пример см. FastLIB на DelphiGFX), www.ijg.org


 
Igit ©   (2004-01-11 17:23) [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;


 
Raki   (2004-01-12 19:41) [6]

Упс. Igit, я немного не смыслю на столь высоком уровне программирования: не мог бы ты мне объяснить, что мне нужно еще дописать в код программы, чтобы не появлялось мессаг,типа:
Undeclared Identifer:"IPicture"
Undeclared Identifer:"IStream"
Undeclared Identifer:"CreateStreamOnHGlobal" и т.д


 
Igit ©   (2004-01-12 22:11) [7]

Давай я тебе вышлю рабочий пример


 
Igit ©   (2004-01-12 22:15) [8]

в секцию uses добавь Ole2, OleCtl;


 
Raki   (2004-01-24 00:27) [9]

Большущий тебе Thanks. Извини, что не ответил раньше: не мог.



Страницы: 1 вся ветка

Текущий архив: 2004.04.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-1080746752
AlexKniga
2004-03-31 19:25
2004.04.25
Кто-нибудь установил Win2K/XP на SATA RAID без floppy?


11-1042971278
Igit
2003-01-19 13:14
2004.04.25
Горизонтальный скролл в ListBox


1-1081102370
tivispider
2004-04-04 22:12
2004.04.25
Как в командной строке скомпилировать проект?


3-1080200885
avgur
2004-03-25 10:48
2004.04.25
Киньте, кому не жалко библиотеку netdir.dll по мылу


11-1064827222
ASilver
2003-09-29 13:20
2004.04.25
Проблема с Bitmap