Bild vegrößern oder verkleinern (image Resize)
-
Hallo,
wie hinlänglich bekannt ist die Qualität einer Grafik (bmp/jpg) wenn ihre Größe über Stretchdraw verändert wurde eher als mangelhaft anzusehen. Ich suche deshalb (sofern es sowas gibt) eine Freeware Klasse die ein Resize ohne dieses Problem hinbekommt. Für Links wäre ich sehr dankbar.
(Borland C++ Developer Studio 2006)Gruß und Dank
Frank
-
F_Pohl schrieb:
wie hinlänglich bekannt ist die Qualität einer Grafik (bmp/jpg) wenn ihre Größe über Stretchdraw verändert wurde eher als mangelhaft anzusehen. ...
Nö, ist hier nicht bekannnt.
-
Das Problem hat zumindest bis einschl. BCB 6 nicht existiert, und ich kann mir das auch nicht vorstellen. Das die Qualität beim Vergrößern nachlässt, ist normal (wenn du keine - vom BDS atm nicht unterstützten - Vektorgraphiken benutzt).
Ansonsten brauchst du dafür untersch. Algorithmen. je nachdem, wie du dir das Resultat, brauchst du da ein billinäres oder bikubischen Verfahren (oder noch andere Exoten). Such mal bei Google oder schau bei Torry.
-
Nimm doch TImage
zum Größe ändern:
AutoSize = false;
Stretch = true;
Image->Width = neue Breite;
Image->Height = neue Höhe;beim laden:
AutoSize = true;
Stretch = false;
-
@grafiker
Das wird er bestimmt genau so machen.Das durch einen Einsatz von StrechDraw die Qualität der Grafiken leiden ist normal.
Du könntest versuchen Pixel in das StrechDraw-Auflösungsformat einzufügen. Die Qualität wird dadurch aber nicht erheblich besser. Wie soll das auch funktionieren?
Wenn in der Grafik nicht genügend Bildinformationen enthalten sind, wird sie beim Vergrößern nicht aus dem Nichts Informationen herzaubern.Gruss
-
Das durch einen Einsatz von StrechDraw die Qualität der Grafiken leiden ist normal.
Egal wie man es macht, das Bild wird immer "leiden".Mit StretchDraw nicht mehr oder weniger.
-
@grafiker
Die Grafikqualität leidet deswegen, und das schon zumindest seit Builder 5, weil Stretchdraw beim verkleinern einfach Informationen verwirft, unabhängig ob ich auf einem TImage zeichne oder direkt auf einem TCanvas (was genau beim vergrößern passiert weiss ich leider nicht). Ein vernünftiges skalieren geht nur über Interpolation respektive über verschiedene Algorhytmen, und genau so eine Klasse, die diese Algorhytmen implementiert hat suche ich.
Google hab ich schon fast ausgereizt, aber alles was ich gefunden habe ist kostenpflichtig oder nicht dokumentiert.Gruß
Frank
-
Tschuldigung, das ich das nochmal rauskrame, aber hier wurde ja noch keine Lösung angeboten.
Habe mich selber mit dem selben Problem rumgeschlagen, und habe nun eine Lösung über GDI+ gefunden.
Mögliche Interpolationsarten:LowQuality
HighQuality
Bilinear
Bicubic
NearestNeighbor
HighQualityBilinear
HighQualityBicubicHier ist beschrieben, wie man GDI+ beim BCB5/6 einbindet.
http://www.leunen.com/cbuilder/gdiplus.html
-
Das war genau das was ich gesucht habe, vielen Dank, jetzt funktioniert es einwandfrei