Главная страница
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.023 c
7-1078397715
М_Т
2004-03-04 13:55
2004.04.25
Как перезагрузить....


7-1075633559
димка
2004-02-01 14:05
2004.04.25
список файлов


1-1081230352
bon
2004-04-06 09:45
2004.04.25
компонент


14-1080643685
ИМХО
2004-03-30 14:48
2004.04.25
Вопрос про окулистов (и не только про них)


1-1081437162
Михаил__
2004-04-08 19:12
2004.04.25
Combobox