Autor |
Beitrag |
Kay E.
      
Beiträge: 118
|
Verfasst: Fr 26.11.10 21:15
Hallo!
Darf ich mal anmerken, dass die Anzahl an Buchstaben für den Titel eindeutig zu klein ist? Naja, sei's drum...
Wie der Titel sagt, bin ich auf der Suche nach einer Komponente, auf der ich etwas abbilden kann, was ich berechnet hab und das ich dann als JPG-File abspeichern kann. Das Formular und dessen Canvas-Fläche fällt weg, da ich das Form noch anderweitig brauch. Paintbox hat keine Save-Methode (die ich kennen würde), TPicture ist nur eine virtuelle Klasse und keine Komponente (wahrscheinlich handhab ich die aber auch falsch) und TImage ist gut zum laden und speichern von Bildern - aber halt nur von existenten Bildern...
Vermutlich ist es eine sehr billige Frage, aber ich hab nichts brauchbares gefunden zu der Frage, welche Komponente ich benutzen sollte und v.a. auch, wie ich das Bild dann als JPG speicher. Als Bitmap, Metadaten und Icons findet mans alle Nase lang (auch die dafür am besten zu nehmenden Komponenten), aber nichts zum mittlerweile doch standartmäßigen JPG.
Wär super, wenn mir da jemand ein wenig unter die Arme greifen könnte. Super wär natürlich auch, wenn irgendwie noch ein Codeschnippsel dabei wär, der den Speichervorgang beschreibt.
Danke schonmal!
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Fr 26.11.10 21:19
Wie wäre es alles in einer PaintBox zu zeichnen und dessen Inhalt dann in ein Jpeg laden und damit abspeichern.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: Fr 26.11.10 21:23
Ja, sowas in der Art hab ich mir auch schon gedacht. Ich habs aber nicht hinbekommen. Meine Idee war, es von der Paintbox aus in einen Stream zu speichern und den Stream in eine JPEG zu laden (von TJpegImage) und dann zu speichern. Das ist aber daran gescheitert, dass Paintbox keine Save-Methoden hat... Demnach habsch dat dann nich hinbekommen... :\
Ein Codeschnippsel wär wirklich hilfreich. Muss kein kompletter Code sein, aber zumindest ein paar Stichpunkte wären wirklich hilfreich!
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Fr 26.11.10 22:40
www.delphipraxis.net...intbox-probleme.html
Das müsste auch mit Jpeg statt Bitmap funktionieren.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 26.11.10 22:42
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| Procedure SaveBMPasJPG(Const FN:String;BMP:TBitmap;Qual:Integer); var jp:TJpegImage; begin jp:=TJpegImage.Create; jp.CompressionQuality := qual; try with jp do begin Assign(BMP); SaveToFile(fn) end; finally jp.Free; end; end;
Image1.Canvas.Ellipse(0,0,100,100); SaveBMPasJPG('C:\Bilder\My.jpg',image1.Picture.Bitmap,90) |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Fr 26.11.10 23:12
Bin mir nicht ganz sicher, aber reicht es nicht aus jpeg in die uses mit aufzunehmen? Da war doch irgendwas...
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Fr 26.11.10 23:28
Bei diesem Versuch wird das Bild mit dem Dateinamen z.B. Test.jpg gespeichert, ein Doppelklick darauf öffnet es mit dem Fehlertoleranten Windows Bildbetrachter.
Das ganze wird als Bitmap abgespeichert, mit dem falschen Namen dran.
Ein ähnliches Gerücht geistert auch immer wieder durch die Foren beim Thema JPG aus Blobfeldern zu laden, geht nur per Stream, aber das Gerücht hält sich hartnäckig.
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: Sa 27.11.10 10:33
Super, danke bummi!
Ich bin immer davon ausgegangen, dass Canvas und Picture zwei gänzlich unabhängige Eigenschaften sind, deswegen bin ich nicht davon ausgegangen, dass man mit Picture auch das Canvas ansprechen kann. So funktioniert das alles! Vielen Dank!
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Sa 27.11.10 11:21
Über das Canvas greifst Du auf das Canvas von Image.Picture.Bitmap zu, Du kannst Dir auch einfach ein Bitmap erzeugen, die Properties u.a. Pixelformat setzen und dessen Canvas nutzen.
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 27.11.10 16:01
Warum der Aufwand, man kann es doch auch einfacher haben:
Delphi-Quelltext 1:
| Image1.Picture.SaveToFile(ExtractFilePath(ParamStr(0)) + 'test.jpeg'); |
Oder ist das so eine schlechte Lösung?!
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: Sa 27.11.10 18:16
bummi hat folgendes geschrieben : | Bei diesem Versuch wird das Bild mit dem Dateinamen z.B. Test.jpg gespeichert, ein Doppelklick darauf öffnet es mit dem Fehlertoleranten Windows Bildbetrachter.
Das ganze wird als Bitmap abgespeichert, mit dem falschen Namen dran.
Ein ähnliches Gerücht geistert auch immer wieder durch die Foren beim Thema JPG aus Blobfeldern zu laden, geht nur per Stream, aber das Gerücht hält sich hartnäckig. |
@ Dude: Ich hab deine Version und bummis mal gegenübergestellt. Wie bummi bereits andeutet, wird das Bild auf deine Art nicht wirklich als JPG gespeichert, sondern nur so benannt. Mit Bummi's Methode ist das Bild 57 kB groß, mit deiner 3165 kB.
@ bummi: Werd ich im Hinterkopf behalten!
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 27.11.10 18:45
Nein es wird eine Datei erstellt und diese ist dann auch vom Typ Jpeg, ich denke sie wird nur nicht komprimiert, was eine Jpeg Datei ausmacht. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: Sa 27.11.10 18:53
@Dude566
hast Du Dir mal die Header angeschaut ?
Stichwort BM / JFIF
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|