AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Quadratische Thumbnails erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Quadratische Thumbnails erstellen

Ein Thema von capo · begonnen am 22. Okt 2010 · letzter Beitrag vom 15. Dez 2010
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

AW: Quatratische Thumbnails erstellen

  Alt 22. Okt 2010, 20:30
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.
Angehängte Dateien
Dateityp: zip Project1.zip (283,9 KB, 20x aufgerufen)

Geändert von Matze (22. Okt 2010 um 20:58 Uhr)
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Quatratische Thumbnails erstellen

  Alt 22. Okt 2010, 21:18
Delphi-Quellcode:
  if ext = 'BMPthen HDCImage.Picture.Bitmap.SaveToFile(dest)
  else SaveBMPasJPG(dest,HDCImage.Picture.Bitmap,qual);
  graphics.Free;
  HDCImage.Free;

end;
Hallo,

das wir dbei mir angemeckert:
Delphi-Quellcode:
SaveBMPasJPG
[DCC Fehler] frmMain.pas(214): E2003 Undefinierter Bezeichner: 'SaveBMPasJPG'
Woran liegt das?
Danke!
Hotte
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#13

AW: Quatratische Thumbnails erstellen

  Alt 22. Okt 2010, 22:58
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#14

AW: Quatratische Thumbnails erstellen

  Alt 22. Okt 2010, 23:42
Das ganze nennt sich übrigens "quadratisch" - mit d
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#15

AW: Quatratische Thumbnails erstellen

  Alt 23. Okt 2010, 09:57
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.
Merkwürdig, aber deinen Beitrag habe ich die ganze Zeit nicht gesehen.
Gruss
Hotte
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Quatratische Thumbnails erstellen

  Alt 23. Okt 2010, 11:18
Das ganze nennt sich übrigens "quadratisch" - mit d
Hehe danke...und ich hatte extra schon darauf geachtet. Stress!
Hotte
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Quadratische Thumbnails erstellen

  Alt 2. Nov 2010, 15:27
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;
Hotte
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Quadratische Thumbnails erstellen

  Alt 2. Nov 2010, 18:13
Zeig doch mal, was Du unter pixelig bzw. unscharf verstehst...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#19

AW: Quadratische Thumbnails erstellen

  Alt 2. Nov 2010, 19:31
ich habe mitlerweile eine Lösung gefunden ...
Hast meinen Anhang doch noch gesehen.

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 Graphics32-Library mal ansehen. Damit erhältst du Ergebnisse wie aus einem guten Bildbearbeitungsprogramm.

Edit: Der Code aus dem SDC könnte es gewesen sein.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#20

AW: Quadratische Thumbnails erstellen

  Alt 3. Nov 2010, 09:23
Würde es nicht genügen, SetStretchBltMode mit halftone aufzurufen und dann mit StretchBlt zu resizen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 12: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