Autor Beitrag
Tony-S
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Mo 22.06.09 22:02 
Ich hab denk ich mal ein einfach zu lösendes Problem und zwar möchte ich ein von mir verändertes Bild als jpg speichern.
Das funktioniert soweit auch ganz gut, aber ich kann es leider nur per "öffnen mit" öffnen.

Das hab ich einfach mal so gemacht:

ausblenden Delphi-Quelltext
1:
2:
3:
SaveDialog1.Options := [ofOverWritePrompt];
SaveDialog1.Filter:='jpg  files (*.jpg)|*.';
IF SaveDialog1.Execute then Image2.Picture.bitmap.SavetoFile(SaveDialog1.FileName);


- gibt es da irgendeine Option die der Datei ein Standardprogramm zum öffnen zuweist?

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 22.06.2009 um 22:28
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 22.06.09 22:16 
Du könntest die Endung da eintragen, wo sie hingehört?
ausblenden Delphi-Quelltext
1:
SaveDialog1.Filter:='jpg files (*.jpg)|*.jpg';					

Das (*.jpg) vorher hat keine Auswirkung, da dies nur der Text ist, der in der Auswahlliste erscheint.

_________________
PROGRAMMER: A device for converting coffee into software.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 22.06.09 22:28 
Moin!

user profile iconTony-S hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
IF SaveDialog1.Execute then Image2.Picture.bitmap.SavetoFile(SaveDialog1.FileName);					
Es sollte mich wundern, wenn dieser Code im Jpeg-Format schreibt... :? Nur .jpg dranschreiben nutzt nix. ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Mo 22.06.09 22:30 
hm also das hier geht:
ausblenden Delphi-Quelltext
1:
IF SaveDialog1.Execute then Image2.Picture.bitmap.SavetoFile(SaveDialog1.FileName+'.jpg');					

auch wenn ich das nich gedacht hätte :> muss ich aber noch unterscheiden ob das vorher bmp ico oder jpg war (hab ich so festgelegt).

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 22.06.09 22:32 
Moin!

Ich bestreite ja gar nicht, dass dieser Code eine Bilddatei erzeugt - aber eben im WindowsBitmap-Format, und kein Jpeg. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Mo 22.06.09 22:34 
Oh, was heißt das denn? Also macht das viel aus ^^?
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Mo 22.06.09 23:39 
Das kommt drauf an - du kannst natürlich eine Ferrari-Karrosserie auf einen VW-Bus stecken, und das Teil wird auch noch fahren, aber so richtig toll isses nicht ;)

Speicher die Datei also lieber mit der korrekten Dateiendung (in diesem Fall ".bmp") oder biete mehrere Dateiformate an (jpeg musst du seperat programmieren)
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Di 23.06.09 22:16 
Hm ich merk glaube was das Problem is, wenn ich jetzt dieses gespeicherte jpeg mit dem Programm öffne dann bekomm ich n jpg Error ;D.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 23.06.09 22:23 
Naja, nur weil du ein Brot in eine Kiste mit der Aufschrift Tomaten legst, wird es nicht zu Tomaten... ;-)
Und nur weil du eine Bitmap in einer Datei mit der Dateierweiterung .jpg speicherst, wird aus der Bitmap kein Jpeg. ;-)

Dafür musst du die Unit Jpeg einbinden und mit TJpegImage arbeiten.
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Fr 26.06.09 13:03 
Hmm hmm ok, aber die Unit jpeg einbinden, wie meinst du das, meinst du damit die uses jpeg?
Ich lad nämlich das Bild auf eine Extra Form ohne Image, eben direkt auf die Form, lässt sich das dann immernoch speichern?
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Fr 26.06.09 13:09 
Oben in deinem Formular sollte sowas stehen wie uses und danach ne ganze liste von wörtern, alle mit einem beistrich getrennt und einen strichpunkt abgeschlossen. In diese Liste must du JPEG schreiben.

Also, richtig angenommen ;)

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.06.09 13:16 
Wo die Bitmap dargestellt wird (TImage oder auf der Form oder wo auch immer), ist ja unerheblich, solange sie noch gültig ist (damit meine ich, dass das Objekt noch vorhanden ist). Eine ganz kurze ausbaufähige Variante könnte etwa so aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
uses ...,jpeg;

...

var JPG: TJPEGImage;
begin
  if SaveDialog.Execute then
    begin
      JPG := TJPEGImage.Create;
      try
        JPG.Assign(Bitmap);
        JPG.SaveToFile(SaveDialog.Filename);
      finally
        JPG.Free;
      end;
    end;
end;

Getippt und nicht getestet.
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Fr 26.06.09 20:58 
Danke erstmal für die Hilfe,
ich war jetzt erstmal am probieren ob ich das mit deinem Text so hinbekomm,
das Assign müsst ich ja rein vom Prinzip her auf das "Bild" anwenden, welches ich verändert hab.
Der Restt müsste ja dann klappen, hängt also noch am Assign.

Hm dieses Free löschts wieder ausm Arbeitsspeicher oder? ^^ Wüsst jetzt nich wozu das sonst ist.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 26.06.09 21:01 
Richtig, Free gibt das dynamisch angelegte Objekt wieder frei. Und das Assign musst Du auf Deine Bitmap anwenden (z.B. Image1.Picture.Bitmap).
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 26.06.09 21:03 
Ich will euch ja nicht den Spaß verderben, aber hat jemand von euch schonmal was von TPicture.SaveToFile gehört? Da kann man sogar angeben, in welches Format gespeichert werden soll.

Anstatt eines TSaveDialog solltest du einen TSavePictureDialog verwenden. Dort muss auch rein gar nichts mehr geändert werden. Also so:

ausblenden Delphi-Quelltext
1:
2:
SavePictureDialog1.Options := [ofOverWritePrompt];
IF SavePictureDialog1.Execute then Image2.Picture.SavetoFile(SavePictureDialog1.FileName);

- und fertig ;)
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Fr 26.06.09 21:05 
Den Dialog hab ich ja :P
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 26.06.09 21:06 
user profile iconTony-S hat folgendes geschrieben Zum zitierten Posting springen:
Den Dialog hab ich ja :P

Dann brauchst du erstens den Filter nicht anzupassen, und zweitens solltest du trotzdem Image2.Picture.SaveToFile verwenden. Dann speichert Delphi automatisch in dem Format, das zur Dateiendung, die Im Dialog angegeben wurde, passt.
Tony-S Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184
Erhaltene Danke: 6

Windows 7, XP, Ubtuntu
Delphi 7, Visual Basic.net
BeitragVerfasst: Fr 26.06.09 21:08 
Ja, aber so richtig klappt das nich :/ , ich probier mal bissl rum.. wenns nich klappt frag ich nochma ^^

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

image.canvas.draw (0,0,bild);

Hm hier "mal" ich ja mein verändertes Bild auf meine Form (image), also dachte ich, dass ich das JPG.Assign zu eben diesem "Bild" nehmen muss.
Oder denk ich jetzt falsch?

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Oh, es geht ja doch :D bis jetzt jedenfalls, jop öffnen geht auch.
Vielen dank das ir mir geholfen habt, so hab ich gleich wieder was gelernt :D, bisher nahm ich an,
das es reicht einfach die Endung an den Dateinamen zu hängen. Jetzt weiß ichs besser thx.