![]() |
AW: Quatratische Thumbnails erstellen
Liste der Anhänge anzeigen (Anzahl: 1)
Lies doch, was man dir schreibt und guck nicht nur auf geposteten Code. ;)
Ich habe doch oben ein mögliches Prinzip erklärt. Anbei ein schnell zusammengetippeltes Beispiel. Es geht auch sauberer und mit weniger temporären Bildern. Nur so finde ich den Weg einleuchtender. Hab's nicht ausgiebig getestet, sondern nur grob. |
AW: Quatratische Thumbnails erstellen
Zitat:
das wir dbei mir angemeckert:
Delphi-Quellcode:
Woran liegt das?
SaveBMPasJPG
[DCC Fehler] frmMain.pas(214): E2003 Undefinierter Bezeichner: 'SaveBMPasJPG' Danke! |
AW: Quatratische Thumbnails erstellen
ich hatte nur einen Auschnitt meiner Tools geschickt, hier der fehlende Teil.
Delphi-Quellcode:
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; |
AW: Quatratische Thumbnails erstellen
Das ganze nennt sich übrigens "quadratisch" - mit d ;)
|
AW: Quatratische Thumbnails erstellen
Zitat:
Gruss |
AW: Quatratische Thumbnails erstellen
Zitat:
|
AW: Quadratische Thumbnails erstellen
Hallo,
ich habe mitlerweile eine Lösung gefunden, leider sehen die Thumbs entweder zu pixeli oder zu unscharf aus. Hat jemand eine Idee? So sieht mein Code momentan aus:
Delphi-Quellcode:
procedure SquareMyJPG(JPGFilePathSource, JPGFilePathDest: string;
SquareLengthPx: Integer); var JPGOrig, JPGThumbSquare: TJPEGImage; BMPThumbNoSquare, BMPThumbSquare: TBitmap; IsLandscape: Boolean; begin JPGOrig := TJPEGImage.Create; try JPGOrig.LoadFromFile(JPGFilePathSource); IsLandscape := JPGOrig.Width > JPGOrig.Height; BMPThumbNoSquare := TBitmap.Create; try // Thumbnail proportional skalieren if IsLandscape then begin BMPThumbNoSquare.Height := SquareLengthPx; BMPThumbNoSquare.Width := Round(SquareLengthPx * JPGOrig.Width / JPGOrig.Height); end else begin BMPThumbNoSquare.Height := Round(SquareLengthPx * JPGOrig.Height / JPGOrig.Width); BMPThumbNoSquare.Width := SquareLengthPx; end; BMPThumbNoSquare.Canvas.StretchDraw( Rect(0, 0, BMPThumbNoSquare.Width, BMPThumbNoSquare.Height), JPGOrig ); // Überflüssiges wegschnibbeln BMPThumbSquare := TBitmap.Create; try BMPThumbSquare.Width := SquareLengthPx; BMPThumbSquare.Height := SquareLengthPx; { if not IsLandscape then BMPThumbSquare.Canvas.Draw( -(BMPThumbNoSquare.Width - BMPThumbNoSquare.Height) div 2, 0, BMPThumbNoSquare ) else BMPThumbSquare.Canvas.Draw( -(BMPThumbNoSquare.Height - BMPThumbNoSquare.Width) div 2, 0, BMPThumbNoSquare ); } BMPThumbSquare.Canvas.CopyRect(Rect(0, 0, SquareLengthPx, SquareLengthPx), BMPThumbNoSquare.Canvas, Rect(0, 0, SquareLengthPx, SquareLengthPx)); BMPThumbSquare.PixelFormat := pf24Bit; // smoothH(BMPThumbSquare); // smoothV(BMPThumbSquare); JPGThumbSquare := TJPEGImage.Create; try // JPGThumbSquare.Width := SquareLengthPx; // JPGThumbSquare.Height := SquareLengthPx; Antialiasing(BMPThumbSquare, Rect(0, 0, BMPThumbSquare.Width, BMPThumbSquare.Height), 10); // Sharpen(BMPThumbSquare,BMPThumbSquare,2); JPGThumbSquare.Assign(BMPThumbSquare); JPGThumbSquare.CompressionQuality := 100; JPGThumbSquare.Compress; JPGThumbSquare.Smoothing := not JPGThumbSquare.Smoothing; JPGThumbSquare.SaveToFile(JPGFilePathDest); finally FreeAndNil(JPGThumbSquare); end; finally FreeAndNil(BMPThumbSquare); end; finally // BMPThumbNoSquare.SaveToFile('C:\bmpnosquare.bmp'); FreeAndNil(BMPThumbNoSquare); end; finally FreeAndNil(JPGOrig); end; end; |
AW: Quadratische Thumbnails erstellen
Zeig doch mal, was Du unter pixelig bzw. unscharf verstehst...
|
AW: Quadratische Thumbnails erstellen
Zitat:
Die Standardfunktionen in Delphi machen leider oft verpixelte Bilder. Wobei es irgendwo einen Code-Schnippsel gab, der das ganz gut hinbekommen hat. Ich finde ich auf Anhieb jedoch nicht. Du kannst dir die ![]() Edit: ![]() |
AW: Quadratische Thumbnails erstellen
Würde es nicht genügen, SetStretchBltMode mit halftone aufzurufen und dann mit StretchBlt zu resizen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 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