AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Treppchenbildung bei Verkleinerung von Jpg´s
Thema durchsuchen
Ansicht
Themen-Optionen

Treppchenbildung bei Verkleinerung von Jpg´s

Ein Thema von torud · begonnen am 14. Jan 2007 · letzter Beitrag vom 14. Jan 2007
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Treppchenbildung bei Verkleinerung von Jpg´s

  Alt 14. Jan 2007, 09:20
Hallo Wissende,

mit folgender Routine erstelle ich eine Verkleinerung eines gewählten JPG´s. Die Grössenverhältnisse stimmen dabei. Es wird also nix verzerrt. Leider sind die Ergebnisse aber mehr als miserabel. Es sind Treppchen zu sehen, da wo schräge Kanten verlaufen sollten.

Wie kann ich das Problem umgehen respektive lösen?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  tbmpDest : TBitmap32;
  tbmpSource: TBitmap32;
  SaveDlg: TSaveDialog;
begin
  with TOpenPictureDialog.Create(nil) do
  begin
    if Execute then
    begin
      tbmpSource := TBitmap32.Create;
      tbmpSource.LoadFromFile(FileName);
      tbmpDest := TBitmap32.Create;
      tbmpDest.SetSize(550, 412);
      tbmpDest.Draw(tbmpDest.BoundsRect, tbmpSource.BoundsRect, tbmpSource);
      Image1.Picture.Bitmap.Assign(tbmpDest);

      SaveDlg := TSaveDialog.Create(nil);
      if SaveDlg.Execute then
        tbmpDest.SaveToFile(SaveDlg.FileName);
      SaveDlg.Free;

      tbmpDest.Free;
    end;
  end;
end;
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Treppchenbildung bei Verkleinerung von Jpg´s

  Alt 14. Jan 2007, 09:22
bist du dir sicher das es sich um ein JPEG handelt? Verarbeitet TBitmap32 auch andere Typen als Bitmaps? Wenn Treppen entstehen wird es wohl an der Verkleinerungsroutine liegen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Treppchenbildung bei Verkleinerung von Jpg´s

  Alt 14. Jan 2007, 09:55
Na klar bin ich mir sicher. Wie sonst hätte überhaupt ein Ergebnis zustande kommen können? Egal. Es hat ja funktioniert, aber leider ist das Problem das Gleiche. Wie Du sehen kannst, ist die Verkleinerungsroutine nicht meine, sondern ich habe lediglich die neuen Grössenangaben übergeben. Diese habe ich auch nur mit einem Grafiktool herausbekommen....

Und nun?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Treppchenbildung bei Verkleinerung von Jpg´s

  Alt 14. Jan 2007, 10:09
Du könntest es mal so probieren:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  R: TKernelResampler;
  tbmpDest : TBitmap32;
  tbmpSource: TBitmap32;
  SaveDlg: TSaveDialog;
begin
  with TOpenPictureDialog.Create(nil) do
  begin
    if Execute then
    begin
      tbmpSource := TBitmap32.Create;
      tbmpSource.LoadFromFile(FileName);
      R := TKernelResampler.Create(tbmpSource); //<-einen Resampler fürs verkleinern benutzen
      R.Kernel := TCosineKernel.Create;
      tbmpDest := TBitmap32.Create;
      tbmpDest.SetSize(550, 412);
      tbmpDest.Draw(tbmpDest.BoundsRect, tbmpSource.BoundsRect, tbmpSource);
      Image1.Picture.Bitmap.Assign(tbmpDest);

      SaveDlg := TSaveDialog.Create(nil);
      if SaveDlg.Execute then
        tbmpDest.SaveToFile(SaveDlg.FileName);
      SaveDlg.Free;

      tbmpDest.Free;
    end;
  end;
end;
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Treppchenbildung bei Verkleinerung von Jpg´s

  Alt 14. Jan 2007, 10:49
Danke für den Tipp, aber ich erhalte eine Meldung:

"Undefinierter Bezeichner: TKernelResampler"

Was fehlt mir noch? Vielleicht was in den Uses?

Die sehen bei mir so aus:

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ExtDlgs, GR32, GR32_Transforms, Jpeg;
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Treppchenbildung bei Verkleinerung von Jpg´s

  Alt 14. Jan 2007, 11:10
Auch für die GR32-Lib soll es so etwas wie eine Hilfe geben, in der die Units zu allen Klassen stehen. Achte aber darauf, dass du wirklich Version 1.8.1 hast, davor gab es statt Resamplern StretchFilter.

@SirThornberry: Egal welche Lib/Klasse man benutzt, Grafikmanipulationen können nur auf reine Bitmaps angewandt werden. Sowohl VCL als auch GR32 müssen alle JPEGs also auf jeden Fall erst zu ihrer vollen Größe dekomprimieren, dann in die Bitmap-Klasse laden und schließlich wieder komprimieren.
Sebastian
Moderator in der EE
  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 15:06 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