Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DDS(DXTC) und andere Formate mit DevIL (https://www.delphipraxis.net/9743-dds-dxtc-und-andere-formate-mit-devil.html)

thehed 2. Okt 2003 21:56


DDS(DXTC) und andere Formate mit DevIL
 
Hallo
Ich möchte gerne Bilder mit der Endung .dds laden also hab ich mir DevIL
runtergeladen und installiert,vielleicht hab ich da was falsch gemacht.
1. die dll's in den ordner wo mein Code ist
2. die 3 .pas files in den lib ordner und
3. einen pfad über die Tool/enviroments/libs funktion geaddet.

dann unter uses die hier zugefügt: openIL, openilu, openilut;

Das Prog:
Delphi-Quellcode:
opendialog1.FileName:='Bild Auswaehlen';       //   oeffnet den
opendialog1.Execute;                           // filedirectory dialog
bildname:=opendialog1.Filename;                 //hier der pfad zur RFA mit namen
nurrfaname:=ExtractFileName(OpenDialog1.FileName); //hier nur der name der rfa

//image laden
image1.Picture.LoadFromFile(bildname);
danach gibts eine unknow Picture file extension...?

Was mach ich falsch?
Es muss leider unbedingt dds sein. :(

[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]

Christian Seehase 2. Okt 2003 22:03

Re: DDS(DXTC) und andere Formate mit DevIL
 
Moin thehed,

Du müsstest wohl mittels TPicture.RegisterFileFormat den Dateityp erst registrieren, bevor Du ihn über den gezeigten Weg benutzen kannst.
Über das wie das damit genau geht, kann ich Dir leider keine Auskunft geben.

thehed 3. Okt 2003 10:29

Re: DDS(DXTC) und andere Formate mit DevIL
 
Schade
weis sonst noch jemand was darüber?
Ich habe noch gelesen das man devIL zuerst initialisieren muss mit:
ilInit;
ilutRenderer(IL_OPENGL);

aber bringt immer noch die selbe fehlermeldung :(

thehed 5. Okt 2003 21:19

Re: DDS(DXTC) und andere Formate mit DevIL
 
ok ich habs jetzt :-D in einer uralten version von DevIL gibts ein Delphi Beispiel.
Dachte mir ich schreibs mal hier hin falls mal jemand das selbe sucht...
Zuerst die Schritte 1 bis 3 aus meinem ersten post

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
 var
  ImgId: TILuint;
  Bitmap: TBitmap;
  MemDC: HDC;
  _Bitmap: HBITMAP;
begin

   OpenIL.ilInit;
   ilutInit;
// how many images ?? 
  ilGenImages(1, @imgID);
  ilBindImage(imgid);
// Normal überschreibt devil beim saven nicht hiermit schon der
// Befehl ist ilsave(test.bmp') oder welches format auch immer

  ilEnable( il_File_Overwrite );

// Bild Laden
 ilLoadImage('test.dds');
//logisch....
 Bitmap := TBitmap.Create;
//grösse von geladenem bild holen
   Bitmap.Width := ilGetInteger(IL_IMAGE_WIDTH);
   Bitmap.Height := ilGetInteger(IL_IMAGE_HEIGHT);
//hdc
   MemDC := CreateCompatibleDC(Canvas.Handle);
//convert eventuell direkt winloadimage benutzen
  _Bitmap := ilutConvertToHBitmap(Bitmap.Canvas.Handle);
//Versteh ich nicht??
  SelectObject(MemDC, _Bitmap);

//das ist klar
  BitBlt(Bitmap.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height,
    MemDC, 0, 0, SRCCOPY);

  Image1.Picture.Assign(Bitmap);

  DeleteDC(MemDC);
  DeleteObject(_Bitmap);
  Bitmap.Free;

  ilDeleteImages(1, @ImgId);
Nun kann ich fast jedes Format laden,nur schade das der Entwickler von DevIL
aufgehört hat.

[edit=FuckRacism]Delphi-Syntax hinzugefügt. Mfg, FuckRacism[/edit]

omeryasarcan 17. Mär 2009 21:43

Re: DDS(DXTC) und andere Formate mit DevIL
 
Leider funktionier es nicht...
Das Bld welches geladen wird, wird nicht angezeigt.

Ich habe es ein wenig abgeaendet aber es tut sich immer noch nichts

Delphi-Quellcode:
procedure TForm1.TntButton1Click(Sender: TObject);
var
  ImgId: TILuint;
  Bitmap: TBitmap;
  MemDC: HDC;
  _Bitmap: HBITMAP;
begin
   OpenIL.ilInit;
   ilutInit;

   // how many images ??
  ilGenImages(1, @imgID);
  ilBindImage(imgid);

  // Normal überschreibt devil beim saven nicht hiermit schon der
  // Befehl ist ilsave(test.bmp') oder welches format auch immer
  ilEnable( il_File_Overwrite );

  if OpenPictureDialog1.Execute then begin
     ilLoadImage(PChar(OpenDialog1.FileName));

     //logisch....
     Bitmap := TBitmap.Create;

    //grösse von geladenem bild holen
    Bitmap.Width := ilGetInteger(IL_IMAGE_WIDTH);
    Bitmap.Height := ilGetInteger(IL_IMAGE_HEIGHT);

    //hdc
    MemDC := CreateCompatibleDC(Canvas.Handle);

    //convert eventuell direkt winloadimage benutzen
    _Bitmap := ilutConvertToHBitmap(Bitmap.Canvas.Handle);

    //Versteh ich nicht??
    // SelectObject(MemDC, _Bitmap);

    //das ist klar
    BitBlt(Bitmap.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, MemDC, 0, 0, SRCCOPY);

    // Bitmap.SaveToFile(ExtractFilePath(Application.ExeName)+'output.bmp');
    Bitmap.SaveToFile('output.bmp');

    Image1.Picture.Assign(Bitmap);

    DeleteDC(MemDC);
    DeleteObject(_Bitmap);
    Bitmap.Free;

   ilDeleteImages(1, @ImgId);

  end; //if OpenPictureDialog1.Execute then begin
end;
.....wer weiss hier Rat.

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz