AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Jpg, Vorschau, TImage, Kompressionsrate
Thema durchsuchen
Ansicht
Themen-Optionen

Jpg, Vorschau, TImage, Kompressionsrate

Ein Thema von isilive · begonnen am 31. Okt 2008 · letzter Beitrag vom 2. Nov 2008
Antwort Antwort
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#1

Jpg, Vorschau, TImage, Kompressionsrate

  Alt 31. Okt 2008, 16:53
Hallo Leute,

ich wandle ein bmp in ein jpg um:

Delphi-Quellcode:
jpg2.CompressionQuality:=quali;
jpg2.assign(bmp2);
Wenn ich jetzt bei 'jpg2' eine sehr schlechte/kleine Compression Quality einstelle, wird es erwartungsgemäss eine sehr kleine Datei mit schlechter Bildqualität wenn ich es auf die Platte speichere.

Später male das JPG in ein TImage:

Delphi-Quellcode:
bmp2.Canvas.StretchDraw(Rect(0,0,Breite2,Hoehe2),jpg2);
form2.ImageBild.picture.bitmap.assign(bmp2);
Ich möchte das TImage 'ImageBild' als Vorschau für die JPG Qualität nutzen. Hier ist die Bildqualität aber immer super! Auch wenn das auf HDD gespeicherte Bild sehr 'schlecht aussieht'!

Wo liegt der Fehler und wie kann ich das lösen?

Danke, Stefan
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Jpg, Vorschau, TImage, Kompressionsrate

  Alt 31. Okt 2008, 17:03
Hallo!

Kann es sein, dass die Qualitätseinstellung von TJPEG erst beim Speichern Wirkung zeigt, beim "Assignen" noch nicht greifen und entsprechend noch die unkomprimierten Daten im Speicher liegen? Quick and Dirty: speichern und neu laden, dann sollte es funktionieren.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#3

Re: Jpg, Vorschau, TImage, Kompressionsrate

  Alt 31. Okt 2008, 17:16
oder einfach

Delphi-Quellcode:
jpg2.CompressionQuality:=quali;
jpg2.assign(bmp2);
jpg2.Compress;
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Jpg, Vorschau, TImage, Kompressionsrate

  Alt 1. Nov 2008, 03:50
Zitat von littleDave:
Delphi-Quellcode:
jpg2.CompressionQuality:=quali;
jpg2.assign(bmp2);
jpg2.Compress;
Funzt leider auch nicht. Hab die quali definitiv <10 und das Bild ist nach 'compress' und
form2.ImageBild.Canvas.StretchDraw(Rect(0,0,Breite2,Hoehe2),jpg2); immer noch in bester Qualität.

Dann hab ich versucht es in einen Memorystream zu speichern und danach wieder zu laden:

Delphi-Quellcode:
var: stream1:tmemorystream;
begin
  jpg2.Savetostream(stream1);
  jpg2.LoadFromStream(stream1);
das Speichern funktioniert problemlos aber das Laden bringt mir immer:
'Im Projekt ist eine Exception der Klasse EJPEG mit der Meldung JPEG-Fehler #43 aufgetreten.'

Ist es mit einem Stream möglich? Wie kann ich es sonst lösen?
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Jpg, Vorschau, TImage, Kompressionsrate

  Alt 1. Nov 2008, 10:13
Nach dem Speichern die Position des Streams auf 0 setzen und erst dann laden.
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#6

Re: Jpg, Vorschau, TImage, Kompressionsrate

  Alt 1. Nov 2008, 19:35
Hallo,

so müsste es klappen:

Delphi-Quellcode:
  jpg.CompressionQuality := quali;
  jpg.Compress;
  jpg.Smoothing := not jpg.Smoothing;
  ImagePreview.Picture.Assign(jpg);
Gruß RoGa
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Jpg, Vorschau, TImage, Kompressionsrate

  Alt 2. Nov 2008, 22:20
Mit 'jpg.smoothing' funktioniert es. Danke!!!! Wer kann aber auch ahnen, dass compress alleine noch zuwenig ist.

Die andere Möglichkeit:
Delphi-Quellcode:
jpg2.Savetostream(stream1);
Stream1.Position := 0;
jpg2.LoadFromStream(stream1);
funktionierte mit der normalen 'uses: Jpeg' nicht. 'JPG-Fehler #43' trotz '.Position:=0'.
Erst als ich die GraphicEx eingebunden habe funktionierte es, kann das jemand nachvollziehen?

Danke auf jeden Fall, beide Möglichkeiten funktionieren jetzt perfekt!
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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