Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi *.jpeg Datei erstellen (https://www.delphipraxis.net/15691-%2A-jpeg-datei-erstellen.html)

Nils1984 2. Feb 2004 17:47


*.jpeg Datei erstellen
 
ich weiss nich ob es zu Multimedia gehört...

ich habe einen Timer der jede Sekunde Zwischenablage ob da nen Bild drin is.

wenn da eins drinne is soll der das als *.jpeg speichern.

in einem ordner der Vorher festgelegt wird.

Hier meine Frage:

Wie kann ich so eine Datei erstellen? :?:
der name der datei hat die Form: name := ('Bild von '+Timetostr(Zeit)+'.jpeg');


Wie geht das??

das der die datei erstellt?

Matze 2. Feb 2004 17:55

Re: *.jpeg Datei erstellen
 
Ich würde erst ein Bitmap draus machen und dann in Jpeg wandeln.

Delphi-Quellcode:
uses Jpeg;

...

var Jpg: TJPEGImage;

...

//Bitmap in -jpg wandeln
JPG.Assign(aBmp);

Achja, wenn das Bild gespeichert wurde, befindet es sich immer noch in der Zwischenablage.
==> Es wird dann jede Sekunde gespeichert.

hboy 2. Feb 2004 17:58

Re: *.jpeg Datei erstellen
 
Delphi-Quellcode:
clip: Clipboard; {unit clipbrd}

clip.clear;

Nils1984 2. Feb 2004 17:59

Re: *.jpeg Datei erstellen
 
hmm ja das is gut.

jaja, die ablage mach ich ja leer mit clipboard.Clear

aber wie Speicher ich das jez ab, wie macht der die datei mit dem namen??

Und was is die var aBmp??



uiuiui

mir is da grad was aufgefallen....

ich hba an keiner stelle meine Variable Datei :TDatei TDatei = File of TPicture

auf das gesetzt was is der ablage is....

uiuiui

hboy 2. Feb 2004 18:01

Re: *.jpeg Datei erstellen
 
des jpeg hat .compress und .savetofile

hboy 2. Feb 2004 18:04

Re: *.jpeg Datei erstellen
 
Delphi-Quellcode:
buf: TJPEGImage;

   buf.Assign(Bitmap);
   buf.CompressionQuality := 50;
   buf.ProgressiveEncoding := true;
   buf.Compress;
   buf.SaveToFile('bild.jpg');
[edit=r_kerber]Delphi-Tags eingefügt. Mfg, r_kerber[/edit]

MrKnogge 2. Feb 2004 18:06

Re: *.jpeg Datei erstellen
 
Ich glaub, er meint wie er das Bild aus dem Zwischespeicher bekommt.
War das nicht PasteFromClipboard ?

hboy 2. Feb 2004 18:06

Re: *.jpeg Datei erstellen
 
und des aBmp muss ein TBitmap sein.

Delphi-Quellcode:
img: TBitmap;

img := TBitmap.create;

  if clip.HasFormat(CF_BITMAP) then
  begin
     img.LoadFromClipboardFormat(CF_Bitmap,clip.GetAsHandle(CF_Bitmap),0);
     clip.Clear;
  end;
[edit=r_kerber]Delphi-Tags eingefügt. Mfg, r_kerber[/edit]

hboy 2. Feb 2004 18:08

Re: *.jpeg Datei erstellen
 
und danach
Delphi-Quellcode:
img.free;

hboy 2. Feb 2004 18:10

Re: *.jpeg Datei erstellen
 
also erst en bild createn, dann vom Clipboard laden, das jpgimage createn, abmp zuweisen, komprimieren, speichern und wieder freigeben. hats geholfen? :roll:

Nils1984 2. Feb 2004 18:12

Re: *.jpeg Datei erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
also erstmal danke für die hilfe

das läuft auch

bis man die Screenshottaste drückt....

ich raff garnix mehr :wall:

Ich häng ma die datei an....

hboy 2. Feb 2004 18:28

Re: *.jpeg Datei erstellen
 
des jpg und clip sind auch objekte die man createn muss.

ausserdem ist das systemclipboard ne extra variable in clipboard:

clip := Clipboard;

hboy 2. Feb 2004 18:28

Re: *.jpeg Datei erstellen
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  clip := Clipboard; // Systemzwischenablage
  img := TPicture.Create;

end;
[edit=MrSpock]Codetags nach r_kerber zum 2. Mal eingefügt. Bitte ab jetzt selber machen. :mrgreen: Mfg, MrSpock[/edit]

hboy 2. Feb 2004 18:29

Re: *.jpeg Datei erstellen
 
sorry ich meinte img: TPicture;

Nils1984 2. Feb 2004 21:07

Re: *.jpeg Datei erstellen
 
Delphi-Quellcode:
Procedure TScreeny.Bild_Speichern;
Var Zeit :TDateTime;
    name :String;
    img: TPicture;
    Jpg: TJPEGImage;
Begin
  Zeit := now;
  Clip := Clipboard;
  img := TPicture.create;
  Jpg := TJPEGImage.create;
  name := ('Bild von '+Timetostr(Zeit)+'.jpeg');
  img.LoadFromClipboardFormat(CF_Bitmap,clip.GetAsHandle(CF_Bitmap),0);
  jpg.Assign(img);
  jpg.CompressionQuality := 50;
  jpg.ProgressiveEncoding := true;
  jpg.Compress;
  jpg.SaveToFile(name);
  clip.clear;
  img.Free;
End;

Function TScreeny.check_ClipBoard :Boolean;
Begin
  if Clipboard.HasFormat(CF_TEXT)
    Then Result := False
    else if clipboard.HasFormat(CF_Bitmap)
           Then Result := True;
end;
soweit bin ich jez, aber da kommt immer ne Fehlermeldung wenn ich die Screenshottaste drück

Stanlay Hanks 2. Feb 2004 21:09

Re: *.jpeg Datei erstellen
 
Hi. Welche Fehlermeldung denn? Da gibts ja viele :wink:

Nils1984 2. Feb 2004 21:13

Re: *.jpeg Datei erstellen
 
grrr :evil:

ich hatte überlegt ob ich sie abschreiben soll, habs dann gelassen wil ich keinen bock hatte,aber wenn du soooo lieb fragst:

"Im Projekt pScreeny.exe is eine Exception der Klasse EConvertError aufgetreten. Meldung : 'TPicture kann nicht zu TJPEGImage zugewiesen werden' Prozess wurde angehalten. rinzelanweisungen blablabla"

Stanlay Hanks 2. Feb 2004 21:21

Re: *.jpeg Datei erstellen
 
Dann liegt es wohl an dem

Delphi-Quellcode:
jpg.Assign(img);
wo du versuchst, dem TJpeg ein TPicture zuzuweisen.

Aber mal ne andere Frage: Wieso eigentlich TPitcure? Interessiert mich nur, weil ich es nicht ganz verstehe, warum da nicht z.B. ein TImage verwendet wird. :gruebel:

Man liest sich, Stanlay :hi:

hboy 2. Feb 2004 21:23

Re: *.jpeg Datei erstellen
 
sorry was ich gepostet hab is nich all mein code:

ich hab das so:

Delphi-Quellcode:
  DesktopBitmap:TBitmap;
implementation

{$R *.dfm}

procedure scrshoot();
begin
   BitBlt(DesktopBitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height,GetDC(GetDesktopWindow),0,0,SrcCopy);
   buf.Assign(DesktopBitmap);
   buf.CompressionQuality := 50;
   buf.ProgressiveEncoding := true;
   buf.Compress;
end;
kommt daher das ich in meinem programm keine jpeg funktion drin hab, die in nem anderen drin steckt. also jpegbild.assign will natürlich ein bitmap also würde ich
sagen nimm mal picture.bitmap da nur picture aus dem clipboard laden kann.

hboy 2. Feb 2004 21:25

Re: *.jpeg Datei erstellen
 
Zitat:

Zitat von Stanlay Hanks
Dann liegt es wohl an dem

Delphi-Quellcode:
jpg.Assign(img);
wo du versuchst, dem TJpeg ein TPicture zuzuweisen.

Aber mal ne andere Frage: Wieso eigentlich TPitcure? Interessiert mich nur, weil ich es nicht ganz verstehe, warum da nicht z.B. ein TImage verwendet wird. :gruebel:

Man liest sich, Stanlay :hi:

TImage is von TGraphicControl abgeleitet was er gar nich braucht. Da würde es schon ein TBitmap tun, das hat aber kein LoadFromClipboard.

natürlich dann auch
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  buf := TJPEGImage.Create;
  DesktopBitmap := TBitmap.Create;
end;

Stanlay Hanks 2. Feb 2004 21:27

Re: *.jpeg Datei erstellen
 
Hi hboy. Danke für die Erklärung, jetzt kapier ich das auch :thumb:

Man liest sich, Stanlay :hi:

Nils1984 2. Feb 2004 21:34

Re: *.jpeg Datei erstellen
 
nett nett und was soll ich jetzt tun??

hboy 2. Feb 2004 21:43

Re: *.jpeg Datei erstellen
 
kanns sein das du probleme mit den : aus der Zeit bekommst ?

Luckie 2. Feb 2004 21:45

Re: *.jpeg Datei erstellen
 
Zitat:

Zitat von Nils1984
soweit bin ich jez, aber da kommt immer ne Fehlermeldung wenn ich die Screenshottaste drück

Schön und jetzt? Veranstallten wir jetzt hier eine Ratestunde und derjenige, der die richtige Fehlermeldung errät, darf den Fehler auch gleich beheben oder ersparst du uns das ganze und verrätst uns den Fehler?

hboy 2. Feb 2004 21:46

Re: *.jpeg Datei erstellen
 
Delphi-Quellcode:
function validtime(s:string):string;
var
  i: integer;
begin
  for i := 1 to length(s) do
  if s[i] <>':'
    then result := result +s[i]
    else result := result +'_';
end;

Procedure Bild_Speichern;
Var Zeit :TDateTime;
    name :String;
    img: TPicture;
    Jpg: TJPEGImage;
    clip: TClipboard;
Begin
  Zeit := now;
  Clip := Clipboard;
  if clip.HasFormat(CF_BITMAP) then
  begin
    img := TPicture.create;
    Jpg := TJPEGImage.create;
    name := ('c:\'+'Bild von '+validTime(Timetostr(Zeit))+'.jpg');
    img.LoadFromClipboardFormat(CF_Bitmap,clip.GetAsHandle(CF_Bitmap),0);
    jpg.Assign(img.bitmap);
    jpg.CompressionQuality := 50;
    jpg.ProgressiveEncoding := true;
    jpg.Compress;
    jpg.SaveToFile(name);
    clip.clear;
    img.Free;
    jpg.Free;
  end;
End;
des tut. habs grad getestet

Nils1984 2. Feb 2004 21:47

Re: *.jpeg Datei erstellen
 
hab ich doch....

der : in der zeit, hmm, der wird in dateinamen nich akzeptiert da könntest du recht haben...

hmm, der QT den du da postest funzt bei mir net der selbe fehler WIE OBEN BESCHRIEBEN

Luckie 2. Feb 2004 21:48

Re: *.jpeg Datei erstellen
 
Zitat:

Zitat von Nils1984
ich hatte überlegt ob ich sie abschreiben soll, habs dann gelassen wil ich keinen bock hatte,aber wenn du soooo lieb fragst:

Und du erwartets von uns dass wir "Bock" haben rumzuraten, was es denn sein könnte um dir zu helfen? :evil: Ich hätte ja jetzt große Lust hier dicht zu machen, wenn du noch nicht mal bereit bist uns beim Helfen zu unterstützen, kann es ja wohl nicht sehr wichtig sein.

hboy 2. Feb 2004 21:50

Re: *.jpeg Datei erstellen
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Nils1984
ich hatte überlegt ob ich sie abschreiben soll, habs dann gelassen wil ich keinen bock hatte,aber wenn du soooo lieb fragst:

Und du erwartets von uns dass wir "Bock" haben rumzuraten, was es denn sein könnte um dir zu helfen? :evil: Ich hätte ja jetzt große Lust hier dicht zu machen, wenn du noch nicht mal bereit bist uns beim Helfen zu unterstützen, kann es ja wohl nicht sehr wichtig sein.

bist du immer so freundlich zu neulingen ? :|

Nils1984 2. Feb 2004 21:53

Re: *.jpeg Datei erstellen
 
Wenn du lieber freundlicher Luckie die beiträge richtig lesen würdest wäre dir auf gefallen das ich die entsprechende Fehlermldung bereits um 22:13 von mir Gepostet wurde in dem sinne :cheers:

hboy 2. Feb 2004 21:58

Re: *.jpeg Datei erstellen
 
kommentier doch mal die compression quality und das progressive encoding aus

Nils1984 2. Feb 2004 21:58

Re: *.jpeg Datei erstellen
 
Noch zu erwähnen wäre sicherlich, das der nach dieser Fehlermeldung mit so nem grünen Pfeil auf

Delphi-Quellcode:
jpg.Assign(img.bitmap);
steht

hboy 2. Feb 2004 22:02

Re: *.jpeg Datei erstellen
 
muss es eigentlich jpg sein ? du kannst doch auch bitmaps speichern vorerst und sehen ob wenigstens das bei dir tut.

Luckie 2. Feb 2004 22:04

Re: *.jpeg Datei erstellen
 
Zitat:

Zitat von hboy
bist du immer so freundlich zu neulingen ? :|

In der Regel schon. Aber wenn er selbst sagt, dass er zu faul ist uns die Fehlermeldung zu nennen, dann ist bei mir Schluss; dann bin ich auch nicht bereit da zeit und Mühe zu investieren, um ihm zu helfen.

BTW ist er schon seit 23.09.2003 hier angemeldet, er sollte also die Gepflogenheiten hier kennen

Nils1984 2. Feb 2004 22:05

Re: *.jpeg Datei erstellen
 
ja, ich versuchs ma nur als bmp

hab dich auch lieb Luckie :love:

Luckie 2. Feb 2004 22:06

Re: *.jpeg Datei erstellen
 
Deklarier mal img als TBitmap. Und benenn mal die Variable name um, das ist in Delphi ein reserviertes Wort.

Nils1984 2. Feb 2004 22:09

Re: *.jpeg Datei erstellen
 
Juhuuu es funktioniert.......


is ja geil, der speichert die ab


danke vielmals


juhuu


jetzt kann ich endlich pennen gehn


ICH DANKE EUCH FÜR EURE HILFE :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 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