![]() |
Delphi-Version: XE6
Qualität tImage
Hallo zusammen,
ich habe gerade eine Anwendung fertig gestellt, welche in einem tImage feinliniege Bilder darstellt. Die Bilder werden mit Stretch und Proportional angepaßt. Leider ist die Qualität der Darstellung teilweise so schlecht, dass man kaum noch etwas erkennen kann. Wenn ich so ein Bild im Windows Bildbetrachter in der selben Grösse daneben halte, ist die Qualität deutlich besser. Das Thema ist wie ich weiß nicht neu, so eine richtige Lösung habe ich bislang aber nicht gefunden. So endet diese DP-Thema ![]() aus dem Jahr 2012 mit den schönen Worten: "Jetzt muß nur noch jemand die beiden DrawingCanvas.StretchDraw(DestRect, Picture.Graphic); ersetzen und Testen ob es wirklich funktioniert." All dies vorausgeschickt: Hat jemand aktuelle Erkenntnisse zu diesem Thema (vozugsweise ohne Nutzung einer externen Komponente)? Alles Gute striderx |
AW: Qualität tImage
Zitat:
![]() |
AW: Qualität tImage
Ich habe mein Problem bislang nicht mit dem Thema Kantenglättung in Verbindung gebracht. Ich werde mir das auf jeden Fall einmal anschauen.
|
AW: Qualität tImage
Das Problem hatte ich mal mit einer TMSKomponente TAdvPicture (oder ähnlicher Name).
Dort mußte ich über einen Eingriff in Paint, die Verzerrung selbst übernehmen. Es ging dabei um Strichzeichnungen. War aber nur mit einer Fremdkomponente -Graphics32- möglich. |
AW: Qualität tImage
Zitat:
Lade doch mal einen Screenshot von der Ursprungsgrafik und der beanstandeten Verzerrung hier hoch, dann kann man sich das besser vorstellen. |
AW: Qualität tImage
>>Lade doch mal einen Screenshot von der Ursprungsgrafik und der beanstandeten Verzerrung hier hoch, dann kann man sich das besser vorstellen. <<
Mach ich, sobald ich ein Muster vom Kunden besorgt habe. |
AW: Qualität tImage
Für das Vergrößern bzw. Verkleinern von Bildern gibt es diverse Verfahren, die den Qualitätsverlust mehr oder minder gut kompensieren.
Hier ein Thread ![]() |
AW: Qualität tImage
Bei GDI+ kann das Antialiasing eingestellt werden
|
AW: Qualität tImage
Ohne die verlinkten Threads gelesen zu haben:
Das TImage scheint bei
Delphi-Quellcode:
einfach eine "Nächster Nachbar"-Berechnung zu machen- Das sieht natürlich absolut unzumutbar aus.
Stretch=True
Ich gehe immer entweder hin und rechne es mit ![]() ![]() Warum man so etwas in der VCL immer noch von Hand machen (bzw. Fremdkomponenten installlieren) muss habe ich nie verstanden aber ich habe sonst heute ja noch nicht gemeckert. |
AW: Qualität tImage
Kannst Du bitte ein Beispiel für die Verwendung von ScaleImage hochladen?
|
AW: Qualität tImage
Die Syntax der Procedure steht doch in der Online-Hilfe,
![]()
Delphi-Quellcode:
ScaleImage(OriginalBitMap, ResultBitMap,2);
|
AW: Qualität tImage
Oder auch hier nochmal:
Delphi-Quellcode:
Du musst dir natürlich noch eine Kopie des Originalbildes vorhalten um es dann in
unit Unit6;
interface uses Vcl.ExtCtrls, Vcl.Graphics; type TImageHelper = class helper for Vcl.ExtCtrls.TImage public procedure makePretty(const withOriginalImage: TGraphic); end; implementation uses Vcl.GraphUtil; { TImageHelper } procedure TImageHelper.makePretty(const withOriginalImage: TGraphic); var srcBitmap: TBitmap; // Enthölt das Originalbild dstBitmap: TBitmap; // Speziell für die aktuellen Abmessungen begin srcBitmap := TBitmap.Create(); try srcBitmap.Width := withOriginalImage.Width; srcBitmap.Height := withOriginalImage.Height; srcBitmap.Canvas.Draw(0, 0, withOriginalImage); dstBitmap := TBitmap.Create(); try dstBitmap.Width := self.Width; dstBitmap.Height := self.Height; // Skalierte Version in neues Bitmap zeichnen if self.Height < self.Width then Vcl.GraphUtil.ScaleImage( srcBitmap, dstBitmap, self.Height / srcBitmap.Height ) else Vcl.GraphUtil.ScaleImage( srcBitmap, dstBitmap, self.Width / srcBitmap.Width ) ; // imageComponent mit neuem Bild bestücken self.Picture.Bitmap := dstBitmap; finally dstBitmap.Free(); end; finally srcBitmap.Free(); end; end; end.
Delphi-Quellcode:
reinstecken zu können. Dann kannst du, wenn du es brauchst, einfach sagen
makePretty(..)
Delphi-Quellcode:
.
image1.makePretty(originalImage)
|
AW: Qualität tImage
Liste der Anhänge anzeigen (Anzahl: 1)
So, jetzt habe ich endlich ein Beispielbild bekommen.
Das Original ist das JPG-Bild, die Dartstellung im tImage das andere. Der Unterschied ist schon recht krass. |
AW: Qualität tImage
Hallo Günther, vielen Dank für das Code-Beispiel. Ich werde es sobald wie möglich ausprobieren.
/edit: So, ich habe es mittlerweile ausprobiert, und die Qualitätsverbesserung ist wirklich dramatisch (und das ohne Fremdkomponente). >>Warum man so etwas in der VCL immer noch von Hand machen (bzw. Fremdkomponenten installlieren) muss ... << Dem kann man nur zustimmen. Vielen Dank für die Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz