Image in .gif spreicher

Für Fragen von Einsteigern und Programmieranfängern...
felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Image in .gif spreicher

Beitrag von felix96 »

Hallo,
Wie kann ich ein Bild, welches sich auf einem Image befindet in eine *.gif Datei speichern?

Hier http://www.lazarus.freepascal.org/index ... pic=8303.0
wird gesagt uses unit TGifImage (wenn ich es richtig verstanden habe).
Trage ich diesen Code allerdings hinter Implentation ein kommt die Fehlermeldung: unit1.pas(162,34) Fatal: Can't find unit tgifimage used by Unit1

Wisst ihr eine Antwort?

P.S. mit gifimage gehts auch nicht :cry:
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Image in .gif spreicher

Beitrag von Scotty »

Leledumbo hat geschrieben:You can find them all from any TXXXImage from Graphics unit in LCL.
uses ...Graphics; BTW: T kommt üblicherweise nur zu Beginn eines Klassenbezeichners.

Benutzeravatar
theo
Beiträge: 10954
Registriert: Mo 11. Sep 2006, 19:01

Re: Image in .gif spreicher

Beitrag von theo »

Soviel ich weiss, kann weder FCL noch LCL GIF schreiben.

Du kannst z.B. mein OpBitmap nehmen

http://www.theo.ch/lazarus/opbitmap64.zip" onclick="window.open(this.href);return false;

Dort brauchst du nur in der IDE bei Package -> Package-Datei öffnen "opbitmapforlazcompat.lpk" auswählen.
Dann kannst du das im Dialog kompilieren. IDE neu bauen ist nicht erforderlich, da es keine visuelle Komponente ist.

Bei deinem Projekt machst du Projekt -> Projektinspektor -> + -> Neue Anforderung -> "opbitmapforlazcompat" auswählen.

Von nun an müsste dir das GIF Format zum Speichern zur Verfügung stehen.

Also z.B.

Image1.Picture.LoadFromFile('/home/theo/screenshow.png');
Image1.Picture.SaveToFile('/home/theo/test.gif');

Es gibt noch viele andere Möglichkeiten OpBitmap zu benutzen. Wenn du nicht alle LCL Reader/Writer durch OpBitmap ersetzen möchtest, kommentiere einfach in unit "RegisterLazOP" die, die du nicht haben willst. Lass mindestens LazOpGif stehen.
Frag mich einfach, wenn du Probleme hast.

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Image in .gif spreicher

Beitrag von felix96 »

Steht die 64 für 64bit?

Edit1: komisch, ich muss die doch die IDE neu kompilieren :?:

Edit2:
bei dem kode:

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
begin
    image1.Picture.LoadFromFile('c:\test.bmp');
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  image1.Picture.SaveToFile('c:\test.gif');
end;
kommt zwar keine Fehlermeldung, aber das gif ist keins (siehe Anhang)

Edit3: Wenn ich das Bild hochladen will sagt, die DLF-Software

Die Bild-Datei, die du versucht hast anzuhängen, ist ungültig.
Zuletzt geändert von felix96 am Sa 4. Sep 2010, 10:29, insgesamt 2-mal geändert.
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Image in .gif spreicher

Beitrag von Socke »

felix96 hat geschrieben:Steht die 64 für 64bit?
Ich kenne das Package nicht, aber ich denke, es bezieht sich definitiv nicht auf die Prozessorarchitektur.
felix96 hat geschrieben:Edit1: komisch, ich muss die doch die IDE neu kompilieren :?:
Das ist bei Komponenten ganz normal. In Lazarus gibts auch irgendwo einen Hinweistext, dass es zur Zeit nicht anders geht (weil der FPC bestimmte Dinge noch nicht kann, die Delphi kann). Wenn du keine neuen Komponenten im Formular-Designer benutzen möchtest, reicht auch einfaches Kompilieren des Packages aus.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
theo
Beiträge: 10954
Registriert: Mo 11. Sep 2006, 19:01

Re: Image in .gif spreicher

Beitrag von theo »

felix96 hat geschrieben:Steht die 64 für 64bit?
Es heisst nur, dass es auch auf 64bit läuft.

Den Rest deines Beitrags verstehe ich nicht.

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Image in .gif spreicher

Beitrag von felix96 »

Es kommt einfach kein gif raus, sondern ein gif was keins ist.
Wenn ich es öffnen will, kommt ein fehler
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Benutzeravatar
theo
Beiträge: 10954
Registriert: Mo 11. Sep 2006, 19:01

Re: Image in .gif spreicher

Beitrag von theo »

felix96 hat geschrieben:Es kommt einfach kein gif raus, sondern ein gif was keins ist.
Wenn ich es öffnen will, kommt ein fehler
Hast du denn alles gemacht, was ich oben geschrieben habe?

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Image in .gif spreicher

Beitrag von felix96 »

ja
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Benutzeravatar
theo
Beiträge: 10954
Registriert: Mo 11. Sep 2006, 19:01

Re: Image in .gif spreicher

Beitrag von theo »

und wenn du die Unit "RegisterLazOP" zur uses hinzufügst?

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Image in .gif spreicher

Beitrag von felix96 »

Nein, auch nicht.
Hier mal das Programm:
Dateianhänge
opbitmap_funkt_nicht.zip
(154.25 KiB) 70-mal heruntergeladen
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Benutzeravatar
theo
Beiträge: 10954
Registriert: Mo 11. Sep 2006, 19:01

Re: Image in .gif spreicher

Beitrag von theo »

Welche Lazarus Version benutzt du?
Woran erkennst du dass es ein "gif ist, was keins ist"? Welche Dateigrösse hat das Resultat? Wie sehen die ersten Zeichen aus, wenn du das in einem (Hex-) Editor öffnest? Da müsste "GIF89a" stehen.

Was passiert, wenn du es so machst:

Code: Alles auswählen

uses opbitmapformats,lazbridge;
 
procedure TForm1.Button1Click(Sender: TObject);
var opp:TOPPicture;
begin
  Image1.Picture.LoadFromFile('/home/theo/result1_1.bmp');
  opp:=TOPPicture.Create;
  AssignBitmapToOpBitmap(Image1.Picture.Bitmap,opp.Bitmap);
  opp.SaveToFile('/home/theo/result1_1.gif');
  opp.Free;
end;

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Image in .gif spreicher

Beitrag von felix96 »

Wenn ich es mit Win-Editor öffne, steht da nur: GIF89a ÷ ÿÿÿ
Bei dinem Code, kommt eine Fehlermeldung:

Project project1.exe raised exception class 'RunError(103)'


dieser ist in der Unit lazbridge, in der Zeile 65 (writeln(int.Height,int.Width);)
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Benutzeravatar
theo
Beiträge: 10954
Registriert: Mo 11. Sep 2006, 19:01

Re: Image in .gif spreicher

Beitrag von theo »

felix96 hat geschrieben:Wenn ich es mit Win-Editor öffne, steht da nur: GIF89a ÷ ÿÿÿ
Aber dann ist es ein GIF. Was der Editor da sonst noch anzeigt, hängt vom Editor ab.
Deshalb habe ich dich wegen der Dateigrösse gefragt. Ausserdem noch Lazarus Version.
felix96 hat geschrieben: Bei dinem Code, kommt eine Fehlermeldung:

Project project1.exe raised exception class 'RunError(103)'


dieser ist in der Unit lazbridge, in der Zeile 65 (writeln(int.Height,int.Width);)
Ja, das ist ein Fehler, du kannst die (Debug-) Zeile einfach löschen. Unter Linux macht das keine Probleme aber unter Win.
Darum habe ich es nicht bemerkt. Werde das Zip nächstens updaten.
Aber du kannst diesen Ast vergessen.
Es wird ja ein GIF gespeichert. Kannst du das GIF nicht hier anhängen? Evtl. gezipped?

EDIT: So der Fehler ist im Zip behoben. Es hatte übrigens noch ein anderes writeln drin. Danke für die Meldung.

felix96
Beiträge: 287
Registriert: So 29. Nov 2009, 17:44
CPU-Target: 32BitWin+64bitUbunt

Re: Image in .gif spreicher

Beitrag von felix96 »

Das rauskommende Bild:
Dateianhänge
test.zip
(603 Bytes) 88-mal heruntergeladen
Danke schonmal für eure Antworten
it´s not a bug, it´s a feature!

Antworten