Autor Beitrag
Kay E.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 118



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 118



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Fr 26.11.10 22:42 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 118



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Sa 27.11.10 16:01 
Warum der Aufwand, man kann es doch auch einfacher haben:
ausblenden 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. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 118



BeitragVerfasst: Sa 27.11.10 18:16 
user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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