Entwickler-Ecke

Multimedia / Grafik - Gif Datei fest in Programm einbinden ?


Blamaster - Fr 31.08.07 13:19
Titel: Gif Datei fest in Programm einbinden ?
Hi,

wie kann man ein Gif Bild fest in ein Programm einbinden. Momentan hab ic hes mit der GIFimage Datei gemacht, nur dann muss das Bild ja immer der exe beiliegen.

Gibt es eine Möglichkeit es richtig ins Programm zu intigrieren ?


Timosch - Fr 31.08.07 13:28

Suche in der Entwickler-Ecke RESOURCE


Blamaster - Fr 31.08.07 19:27

So Halbwegs hab ich das Prinzip ja schon verstanden. Ich bekomme nur i wie nicht hin aus der rc Datei eine res Datei zu erzeugen. Mit der RESS32.exe will das bei mir irgendwie nicht klappen.

Hab es auch schon mit dem M.Res Editor versucht, wollte aber auch nicht klappen.

Könnte mir vielleicht irgendwer die Res Datei Erstellen in der STATUS GIF "C:\Eigene Datein\status.gif" zugewiesen wird ?

mfg Bla


Blackheart666 - Fr 31.08.07 21:11

Probiers mal mit
STATUS RCDATA "C:\Eigene Datein\status.gif"
und dann einfach auf die Brcc32.exe per Drag & Drop ziehen.


Blamaster - Sa 01.09.07 11:53

Funktioniert leider auch nicht :?


Timosch - Sa 01.09.07 12:09

user profile iconBlamaster hat folgendes geschrieben:
Funktioniert leider auch nicht :?

WAS funktioniert nicht? Meine Glaskugel ist grad in der Reinigung, also wäre eine Angabe der Fehlermeldung (wenn es eine gibt) ganz praktisch.
Abgesehen davon: Was ist denn die ress32.exe. Der Ressourcencompiler heißt AFAIK (wie schon oben von meinem Vorposter geschrieben) brcc32.exe.
Und achte darauf, bei der Übergabe der Kommandozeilenparameter keine TIppfehler zu machen. Oder heißt dein Eigene Dateien-Ordner wirklich "Eigene Datein"?


Blamaster - Sa 01.09.07 12:40

Es geht wie bereits schon oben geschrieben darum, das wenn ich die RC Datei via Drag&Drop auf die brcc32.exe ziehe nichts passiert und keine Res Datei erstellt wird.


Blackheart666 - Sa 01.09.07 13:02

Wie Timosch schon sagt überprüfe mal die richtigkeit der Pfade ansonsten probiers mal ohne Ordner kopiere das Bild und die brcc32.exe in deinen Projektordner und zieh dann die rc auf die brcc32.
STATUS RCDATA "status.gif"


Timosch - Sa 01.09.07 13:04

Ruf brcc32 über die Eingabeaufforderung auf, erstmal ohne Parameter, dann werden die alle möglichen Parameter genannt. Schau dir die mal an, es gibt unter anderem einen für die Ausgabedatei. Müsste dann eigentlich irgendwie so gehen: brcc32 test.rc -fo test.res. Kanns aber leider grad nicht probieren.
Hab den Verdacht, dass die res-Datei evtl. im Delphi-Verzeichnis (im Unterordner bin) erstellt wird, weil du keine Ausgabedatei festgelegt hast.


Chryzler - Sa 01.09.07 14:41

Wenn du die GIF-Datei sowieso in einem Image immer anzeigen willst, dann kannst du ja gleich während der Entwicklungszeit die Datei ins Image laden. Wird dann am Ende auch als Ressource in die EXE gepackt.


Blamaster - Sa 01.09.07 19:38

@ Chryzler genau das möchte ich eigentlich.

Momentan ist mein Bild so eingebunden:

Image4.Picture.LoadFromFile('Status.gif');

Wenn ich jetzt aber die exe in einem anderen Verzeichnis öffne wo das Bild nicht beiliegt kommt folgende Meldung:

Can not open file C:\Verzeichnisname\status.gif. Datei kann nicht gefunden werden.
Scheinbar liegt sie also doch noch nicht in der resource.


Timosch - Sa 01.09.07 20:20

Ähm, auf die Art und Weise kannst du natürlich nur aus Dateien laden, nicht Ressourcen... Dafür gibts LoadFromRessource oder so.


Chryzler - Sa 01.09.07 22:16

user profile iconBlamaster hat folgendes geschrieben:
@ Chryzler genau das möchte ich eigentlich.

Momentan ist mein Bild so eingebunden:

Image4.Picture.LoadFromFile('Status.gif');

Wenn ich jetzt aber die exe in einem anderen Verzeichnis öffne wo das Bild nicht beiliegt kommt folgende Meldung:

Can not open file C:\Verzeichnisname\status.gif. Datei kann nicht gefunden werden.
Scheinbar liegt sie also doch noch nicht in der resource.

Du markierst einfach dein Image, wählst im Objektinspektor bei Picture dein Bild aus, und es wird automatisch als Resource dann in deiner EXE gespeichert. Im Code selber brauchst du dann nichts mehr laden.


Blamaster - Sa 01.09.07 23:19

Dort kann ich aber keine .gif Datein laden oder ?


Chryzler - Sa 01.09.07 23:33

user profile iconBlamaster hat folgendes geschrieben:
Dort kann ich aber keine .gif Datein laden oder ?

Jo, aber was spricht gegen eine Bildumwandelung? Allerdings, wenn TPicture.LoadFromFile mit GIF-Dateien geht, dann sollte das im Objektinspektor eigentlich auch gehn :gruebel:


Blamaster - Sa 01.09.07 23:37

Das Problem dabei ist, das das Bild animiert bleiben soll.


Blackheart666 - So 02.09.07 08:30

So Richtig scheinst Du noch nicht zu wissen was Du eigentlich willst, wenn es Dir bloß um das anzeigen von Gif geht schau mal bei Torry.net da gibt es Komponenten die dies können.


Blamaster - So 02.09.07 10:52

Ich weiß schon was ich will und kann es auch gerne nochmal schreiben :)

Das gif Bild soll in die Resource gepackt werden, damit ich das Bild nicht mehr auf der Platte haben muss.

Meine brcc32.exe scheint einen knacks zu haben und funktioniert nicht.

Dann schrieb allerdings mein vorposter das ich das Bild auch in die Resourcen bekomme wenn ich es in das Timage lade. Das funktioniert ja nun auch nicht, weil die Komponente so ja kein Gif unterstützt.

Das heißt ich stehe mit dem Problem momentan wieder am Anfang, außer wenn einer von euch mal fix nen Res Datei erstellen kann mit dem Bild status.gif, welches in den EigenenDatein liegt.


Chryzler - So 02.09.07 11:47

Lad mal die status.gif hier hoch, das muss ich jetzt auch ausprobieren.


Silas - So 02.09.07 12:53

Nimm einfach Suche in: Delphi-Forum RESED.


Blamaster - So 02.09.07 12:58

Hier das Bild


Chryzler - So 02.09.07 14:40

Und du hast es geschafft, dass das GIF-Bild animiert in einem TImage angezeigt wird? :shock: TPicture kennt nämlich keine GIF-Dateien bei mir hier. In ner Resourcendatei hab ich die GIF-Datei jetzt, aber das nützt dir ja nix, wenn du sie ned anzeigen lassen kannst. Hier hilft nur das Entpacken der einzelnen Frames in der GIF-Datei, diese als Bitmaps als Resource einbinden, und dann per Timer abwechselnd laden.


Blamaster - So 02.09.07 16:31

Logisch hab ich es geschafft das gif Bild zu laden. Mit ner zusätzlichen Komponente allerdings:


Blackheart666 - So 02.09.07 17:32

Hier ist einfach Hopfen und Malz verloren. Sorry ! :wink:


Blamaster - So 02.09.07 17:34

Wieso so funktioniert es doch schließlich oder sehe ich das falsch ?


Blackheart666 - So 02.09.07 17:45

user profile iconBlamaster hat folgendes geschrieben:
Wieso so funktioniert es doch schließlich oder sehe ich das falsch ?

Könnte sein, Du beantwortest ja hier gestellte Fragen nicht, mit Ressourcen hat das jedenfalls nichts oder nur indirekt zu tun.
Was helfen würde wäre vieleicht mal etwas auszuholen was Du überhaupt vorhast, aber - Du möchtest ja etwas.


Chryzler - So 02.09.07 17:50

Omg, sag das doch bitte am Anfang des Threads, dass du eine andere Komponente verwendest.. ich zerbrich mir den Kopf und.. egal. Du musst die GIFImage.pas als Komponente registrieren, oder halt in die Packages aufnehmen. Dann sollte auch im Objektinspektor der TImage-Komponente GIF-Dateien zu auswählen sein.


Blamaster - So 02.09.07 18:18

:D Jetzt sind wie also doch noch zum ziel gekomme.

Ich hatte die Komponente erst nur in die Unit eingebunden, deswegen konnte man das Format .gif auch noch nicht wählen.

Aber jetzt wo die Komponente installiert ist klappt alles bestens.

Danke an Alle für die Mühe.


Blackheart666 - So 02.09.07 18:25

Schön ! - der ganze Thread fast umsonst, nur weil Du auf gestellte Fragen nicht antworten kannst !
Wir wollen doch hoffen das es bei den nächsten Fragen etwas einfacher wird. :wink:


napsterforever - Do 02.07.09 20:05

wie genau muss ich die GIFImage.pas installieren?


jaenicke - Do 02.07.09 20:28

Gar nicht, nur in die uses aufnehmen und entweder deren Pfad in den Bibliothekspfad aufnehmen oder die Datei dem Projekt hinzufügen.


napsterforever - Do 02.07.09 21:12


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, IdCookieManager, IdIOHandler, IdIOHandlerSocket,
  IdSSLOpenSSL, Idcookie, sSkinProvider, sSkinManager, OleCtrls,
  SHDocVw_TLB, ExtCtrls, ComCtrls, sListView, Menus, GIFImage;
und hab die GIFImage.pas in Delphi7\Lib abgelegt, der ordner müsste ja im Bibliothekspfad vorhanden sein und dem projekt zufügen hab ich auch versucht, aber ich kann im objektinspektor immer noch keine gif auswählen


jaenicke - Do 02.07.09 21:17

Warum im Objektinspektor? Wenn du es dort haben willst, dann wandele doch einfach das Bild vorher in .bmp um. Das kommt dann auf das selbe hinaus. Interessant wäre .gif ja nur, wenn es als .gif in der Exe wäre und dann zur Laufzeit geladen würde. Zum Beispiel aus einer Ressource.

Intern wird nämlich jedes Format bei Delphi bis 2007 oder so unkomprimiert als .bmp gespeichert in der Exe.


napsterforever - Do 02.07.09 21:23

Ja wenn ich die gif in bmp umwandle ists ja keine gif mehr, sprich nicht mehr transparent oder animiert etc?!
also wenn man die Image Komponente unter dem Reiter "Zusätzlich" auf die Form zieht und dann im Objektinspector unter Picture ein Bild auswählen will, kann man ja keine gif auswählen! Und ich dachte nach den Beschreibungen s.o. ist es mit dieser GIFImage.pas möglich, oder hab ich da was falsch verstanden?!

user profile iconChryzler hat folgendes geschrieben Zum zitierten Posting springen:
... Dann sollte auch im Objektinspektor der TImage-Komponente GIF-Dateien zu auswählen sein.


jaenicke - Do 02.07.09 21:41

:oops: Ich habe es gerade ausprobiert, mit der Klasse klappt es doch so.

Menü Komponente --> Komponente installieren, die GifImage.pas auswählen, ok, im dann erscheinenden Fenster kompilieren und installieren klicken, fertig. Danach geht es auch via Objektinspektor.


napsterforever - Do 02.07.09 22:55

tatsache :D

ich wusste halt nur nicht wie ich das installiere :roll: