Ищу исходник конвертера BMP->GIF||PNG||JPG

Тема в разделе "WASM.WIN32", создана пользователем Selah, 3 мар 2009.

  1. Selah

    Selah New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2007
    Сообщения:
    258
    Ребята, поделитесь кто-то исходником функции или модуля на delphi ( без vcl и левых компонентов) для конвертирования bmp в gif или png или jpg . Короче что бы сильно укоротить размер файла изображения, а то 3.5 метра никак не катит, а времени писать что-то свое нету
     
  2. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
  3. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь
    http://www.imagemagick.org - скомпиль в dll. Делает всё.

    Ну или бегом на делфи сайты, типа torry delphi pages.
     
  4. Selah

    Selah New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2007
    Сообщения:
    258
    та искал, нифига не подходит, длл таскать в проге мне не катит.

    Может можно как-то урезать бмп , разрешение, цвет ? качество мне не очень важно. Что бы где-то на 200 кб получилось изображение
     
  5. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Как сказал: punxer ГДИ+
    Код (Text):
    1. function GetEncoderClsid(format: string; var pClsid: TGUID): integer;
    2. var
    3.   num, size, il: DWord;
    4.   ImageCodecInfo: PImageCodecInfo;
    5. Type
    6.   ArrIMgInf = array of TImageCodecInfo;
    7. begin
    8.   num  := 0;
    9.   size := 0;
    10.   result := -1;
    11.   GdipGetImageEncodersSize(num, size);
    12.   if (size = 0) then exit;
    13.   GetMem(ImageCodecInfo, size);
    14.   if GdipGetImageEncoders(num, size, ImageCodecInfo) = Ok then
    15.    for il := 0 to num - 1 do
    16.    begin
    17.      if (ArrIMgInf(ImageCodecInfo)[il].MimeType = format) then
    18.      begin
    19.        pClsid := ArrIMgInf(ImageCodecInfo)[il].Clsid;
    20.        result := il;
    21.        Break;
    22.      end;
    23.    end;
    24.   FreeMem(ImageCodecInfo, size);
    25. end;
    26.  
    27. function Bitmap2Jpeg(Filename: PChar): Boolean;
    28. var
    29.   image: TGPImage;
    30.   Encoder_GUID: TGUID;
    31.   Stream: IStream;
    32.   hMem,hFile,BR: DWORD;
    33.   MemPtr: Pointer;
    34. begin
    35.   ZeroMemory(@Encoder_GUID,sizeof(Encoder_GUID));
    36.   result := GetEncoderClsid('image/jpeg',Encoder_GUID) > -1;
    37.   if not Result then exit;
    38.   hFile := CreateFileA(Filename,GENERIC_ALL,3,nil,OPEN_EXISTING,0,0);
    39.   Result := hFile <> INVALID_HANDLE_VALUE;
    40.   if not Result then exit;
    41.   BR := GetFileSize(hFile,nil);
    42.   hMem := LocalAlloc(GMEM_MOVEABLE,BR);
    43.   Result := hMem <> 0;
    44.   if not Result then exit;
    45.   MemPtr := LocalLock(hMem);
    46.   if MemPtr = nil then
    47.   begin
    48.     LocalFree(hMem);
    49.     CloseHandle(hFile);
    50.     exit;
    51.   end;
    52.   result := ReadFile(hFile,MemPtr^,GetFileSize(hFile,nil),BR,nil);
    53.   if not Result then
    54.   begin
    55.     LocalUnlock(hMem);
    56.     LocalFree(hMem);
    57.     exit;
    58.   end;
    59.   LocalUnlock(hMem);
    60.   CloseHandle(hFile);
    61.   result := CreateStreamOnHGlobal(hMem,true,Stream) = S_OK;
    62.   if not Result then
    63.   begin
    64.     LocalFree(hMem);
    65.     CloseHandle(hFile);
    66.     exit;
    67.   end;
    68.   image := TGPImage.Create(Stream);
    69.   Result := image.GetLastStatus = Ok;
    70.   if not Result then
    71.   begin
    72.     LocalFree(hMem);
    73.     exit;
    74.   end;
    75.   result := image.Save(Filename,Encoder_GUID) = Ok;
    76.   image.Free;
    77.   LocalFree(hMem);
    78. end;
    Думаю там все понятно.
     
  6. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    http://www.cg.tuwien.ac.at/~knapp/graphix_old/gxframe.html
    http://logicnet.dk/lib/
    http://delphi.pjh2.de/articles/graphic/png.php
     
  7. Selah

    Selah New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2007
    Сообщения:
    258
    mrcrown спасибо
     
  8. FlasH

    FlasH New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2008
    Сообщения:
    4
    mrcrown спасибо