| Autor |
Beitrag |
Bomania
      
Beiträge: 139
Win XP
|
Verfasst: Fr 21.02.03 11:58
Hallo,
ich habe hier im Forum zwar das eine oder andere Thema über Screenshots gefunden, allerdings wird es da immer als BMP abgespeichert. Ich habe selbst auch eine Funktion:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| function GetScreenShot(Pfad:String):TBitmap; var Desktop:HDC; begin Result:=TBitmap.Create; Desktop:= GetDC(0); try try Result.PixelFormat:=pf24bit; Result.Width:=Screen.Width; Result.Height:=Screen.Height; BitBlt(Result.Canvas.Handle,0,0,Result.Width,Result.Height,Desktop,0,0,SRCCOPY); Result.Modified:=True; result.SaveToFile(Pfad + 'Test.bmp'); finally ReleaseDC(0,Desktop); inc(SS_Number); end; except Result.Free; Result:=nil; end; end; |
Das funktioniert auch, aber bei einer Auflösung von 1024x768 nimmt das gespeicherte Bild bei 24bit bereits eine Größe von 2,3 MB an. Kann man die Sache nicht auch irgendwie als JPG abspeichern? Meine Erfahrungen darin sind noch nicht sehr groß, vielleicht kann mir ja jemand weiterhelfen.
Danke
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Fr 21.02.03 12:12
Hallo,
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| uses JPEG;
... ... Result.Width:=Screen.Width; Result.Height:=Screen.Height; BitBlt(Result.Canvas.Handle,0,0,Result.Width,Result.Height,Desktop,0,0,SRCCOPY) // Bitmap in JPEG with TJPEGImage.Create do try //Performance:=jpBestQuality; //CompressionQuality:=90; Assign(Result); SaveToFile(Pfad + 'Test.jpg'); finally Free; end; // try, with ... ... |
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
Bomania 
      
Beiträge: 139
Win XP
|
Verfasst: Fr 21.02.03 12:29
 Vielen Dank für die schnelle Antwort!
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 21.02.03 14:41
Dir ist aber klar, daß Jpeg's eigentlich nur für Fotos gut sind und eine schlechte Qualität haben wenn es um ScreenShots geht. Ich bezweifele, daß du mit deinen ScreenShots vom Desktop glücklich wirst.
|
|
foxy
      
Beiträge: 814
Ubuntu, Gentoo
C++, PHP, Java, Ruby, Perl (Eclipse)
|
Verfasst: Fr 21.02.03 14:49
naja Popov ...
was meinst du sind nur für photos gut ... so kannst du das nicht sagen, .jpg ist auch noch gedacht zum kompremieren von bildern ....
oder verwendest du im i-net .bmp ??
ne im ernst eins denke ich muss ich popov recht geben es ist eigentlich unsinnig, ne .bmp umzuwandeln in eine .jpg, denn das verlangsamt dein programm aber wenn du es richtig machst hast du kein quali verlust !
_________________ "Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." (Linus Torvalds)
OperatingSystem Laptop (Ubuntu Hardy)
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 21.02.03 15:26
| foxy hat folgendes geschrieben: | | ... aber wenn du es richtig machst hast du kein quali verlust ! |
Gute Mann, weißt du auch wovon du sprichst?
Jpeg ist Bilder mit großen gleichfarbigen Flächen ungeeignet. Das ist das 1 x 1 der Bildformate. Fotos, damit meine ich Bilder die man mit einem Fotoaparat macht (z.B. Personen, Gesichter, Landschaft, ...), haben keine gleichfarbigen Flächen. Die qualitätsverlußte um einen Pixel herum verlieren sich also in der Masse von verschiedenen Farben. Die Qualitätsverluße sind also da, aber das menschliche Auge sieht sie nicht. Anders ist es mit Vektor-Grafiken und Zeichnungen (z.B. Cad-Zeichnung, Windowsfenster, ...). Diese haben große einfarbige Flächen. Jpeg kann dammit nicht umgehen und simmuliert die Farbe. Das ergebnis sind Flecken. Die sind noch das kleinste Problem. Um die Schrift herum wird es ganz schlimm.
Teste sowas das nächste mal bevor du dich zu Wort meldest.
Normal
Jpeg 50%
Jpeg 100%
Sag mir wo da keine Verlußte sind.
Noch was:
| foxy hat folgendes geschrieben: | naja Popov ...
was meinst du sind nur für photos gut ... so kannst du das nicht sagen, .jpg ist auch noch gedacht zum kompremieren von bildern ....
oder verwendest du im i-net .bmp ??  |
Für das Internet gibts verschiedene Formate. Für Fotos werden JPEG genommen. Sie haben Verlußte, diese sind aber bei Fotos kaum sichtbar.
Dann gibts noch GIF. Gif sind gut komprimiert und verlußtfrei, aber leider nur bis 256 Farben geeigenet.
PNG. Neues Format für das Internet. Gute Kompresion und geeignet für TrueColor.
|
|
torstenheinze
      
Beiträge: 461
|
Verfasst: Fr 21.02.03 15:46
| Zitat: | Sag mir wo da keine Verlußte sind.
|
ich weiß nicht was du hast?
es reicht doch aus um die schrift zu lesen!
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 21.02.03 16:32
Also gut, wenn Schrift lesen können genug ist, dann ich ja alles ok. Es ändert aber nichts daran, daß das Jpeg Format nicht dafür gedacht ist. Und Schrift lesen ist kein Hinweis drauf, daß es keine Qualitätsverlußte gibt. Wenn ich ScreenShots von dem Desktop mache, dann arbeite ich nach dem Prinzip, daß man nicht noch etwas erkennen kann, sondern daß das Bild gut ist. Es gibt übrigens Formate die viel besser für ScreenShots geegnet sind, keine Qualitätsverluste haben und dennoch kleiner als Jpeg's sind. Aber warum soll man über die Möglichkeiten diskutueren. Sollange man noch die Schrift lesen kann ist alles ok.
|
|
Bomania 
      
Beiträge: 139
Win XP
|
Verfasst: Fr 21.02.03 17:19
Also mir kommt es hier nur auf den Speicherbedarf an. Ein BMP kostet mit 32bit über 3MB. Bei 100 Pics also schon 300MB. Es soll genügen, wenn man alles gut erkennen kann. Ich benötige keine 1zu1-Kopie vom Desktop, es reicht auch ein JPEG mit 100%.
|
|
Popov
Gast
Erhaltene Danke: 1
|
Verfasst: Fr 21.02.03 17:44
Ok, dann paar Infos:
Ein 32Bit Bild kann man auch ohne Verluste in 24Bit konvertieren.
Wenn es nur erkennbar sein soll, dann gibt es bessere Möglichkeiten:
Das Bild in 256 Farben konvertieren und dann in Graustuffen. Dieses Bild dann als Gif abspeichern. Die Bilder bleiben scharf, nur sind eben schwarzweiß. Die Größe ist noch kleiner als die von Jpeg. Noch kleiner sind Bilder mit nur 16 Graustufen.
Wenn es aber bunt sein Soll, dann ist PNG sehr gut. Die Farben bleiben TrueColor und die Größe ist nur ein Bruchteil von Jpeg.
|
|
DelphiNoob
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Sa 22.02.03 12:55
@ Popov
du scheinst ja echt Ahnung zu haben, gibt es eine möglichkeit mit Delphi Screenshots zu machen und dann in png zu konvertieren? Oder eine andere Möglichkeit die dir vieleicht einfällt um Bilder möglichst Verlustfrei aber komprimiert zu übertragen?
|
|
DaRkFiRe
      
Beiträge: 526
WinXP Home & Professional
C, C++, Delphi
|
Verfasst: Sa 22.02.03 16:08
Tjo, altbewährte Antwort zu diesem Thema: schau bei torry.net nach einer Komponente *g*
_________________ Lang ist der Weg durch Lehren - kurz und wirksam durch Beispiele! Seneca
|
|
DelphiNoob
      
Beiträge: 152
Win 2003 Server
D7 Ent
|
Verfasst: Sa 22.02.03 19:13
|
|