AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildbearbeitung mit Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Bildbearbeitung mit Delphi

Ein Thema von Muellermilchtrinker · begonnen am 5. Jun 2011 · letzter Beitrag vom 14. Jun 2011
Antwort Antwort
Seite 2 von 4     12 34      
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#11

AW: Bildbearbeitung mit Delphi

  Alt 6. Jun 2011, 20:11
Mein Problem ist nur, dass Bild zu verkleinern und nachher ein neues Bild zu erstellen, anhand der neuen Pixelfarbe.
Mach doch erst Stretchbit, wie oben beschrieben. Dann hast du die Größe und kannst mit den Farben machen was du willst.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#12

AW: Bildbearbeitung mit Delphi

  Alt 9. Jun 2011, 19:10
Also ich häng nun doch beim verkleinern.
Ich nutze folgenden Code:
Delphi-Quellcode:
  Image2.Canvas.StretchDraw(Rect(0,
                               0,
                               30,
                               30),
                               image1.Picture.bitmap);
Doch nun gibt es ein paar Dinge: 1. Damit funktionieren nur Bitmaps und 2. Wird das Bild oben klein angezeigt und darum ein weißen Hintergrund. Ich möchte, dass das Bild nun groß angezeigt wird, dass man die einzelnen Pixelgrenzen sieht. Vielleicht kann mir jmd. helfen
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#13

AW: Bildbearbeitung mit Delphi

  Alt 9. Jun 2011, 19:34
Ganz habe ich nicht verstanden, wo genau Dein Problem liegt, aber es gibt eigentlich verschiedene Verfahren, wie gestretcht wird...

Also eigentlich solltest Du Dir das mal so ganz schnell selber schreiben können, so wie ich das hier verstanden habe.
Hier mal eine Unit, wie man das mit Graphics32 machen kann :
Delphi-Quellcode:
procedure GR32Stretch(Src: TBitmap32; Dst: TBitmap; proportional: Boolean = True; Quality: Integer = 3);
var
  Dst2: TBitmap32;
begin
  Dst2 := TBitmap32.Create;
  Dst2.Assign(Dst);

  GR32Stretch(Src, Dst2, proportional, Quality);

  Dst.Assign(Dst2);
  Dst2.Free;
end;

procedure SetProportional(dstBMP: TBitmap32; scrRECT: TRect);
begin
  if RectHeight(scrRECT) > RectWidth(scrRECT) then
    dstBMP.Width := Round(RectWidth(scrRECT) * dstBMP.Height / RectHeight(scrRECT))
  else
    dstBMP.Height := Round(RectHeight(scrRECT) * dstBMP.Width / RectWidth(scrRECT));
end;

procedure GR32Stretch(Src, Dst: TBitmap32; proportional: Boolean = True; Quality: Integer = 3);
// http://graphics32.org/wiki/FAQ/Resampling
var
  R3: TKernelResampler;
  R2: TLinearResampler;
  R1: TDraftResampler;
  R0: TNearestResampler;
begin
  if (Src.Width < 1) or (Src.Height < 1) or (Dst.Width < 1) or (Dst.Height < 1) then
    Exit;

  if proportional then
    SetProportional(Dst, Src.BoundsRect);

  case Quality of
    3:
      begin
        R3 := TKernelResampler.Create(Src);
        R3.Kernel := TLanczosKernel.Create;
      end;
    2:
      begin
        R2 := TLinearResampler.Create(Src);
      end;
    1:
      begin
        R1 := TDraftResampler.Create(Src);
      end;
    0:
      begin
        R0 := TNearestResampler.Create(Src);
      end;
  end;

  Dst.Draw(Dst.BoundsRect, Src.BoundsRect, Src);
end;

end.

Geändert von Jens01 ( 9. Jun 2011 um 19:36 Uhr)
  Mit Zitat antworten Zitat
freeway

Registriert seit: 11. Jul 2009
57 Beiträge
 
Delphi XE Professional
 
#14

AW: Bildbearbeitung mit Delphi

  Alt 9. Jun 2011, 20:16
quick & dirty
Delphi-Quellcode:
image1.Width := 30;
image1.Height := 30;
Image1.Canvas.StretchDraw(Rect(0,
                               0,
                               30,
                               30),
                               image2.Picture.bitmap);

image1.Width := 300;
image1.Height := 300;
image1.Stretch := true;
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#15

AW: Bildbearbeitung mit Delphi

  Alt 9. Jun 2011, 20:31
@freeway: so einfach O.o

Also das funktioniert nun, vielleicht weiß noch jemand, wie man das auf JPEGs und PNGs erweitern kann? funktioniert gerade nur mit BMPs
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
freeway

Registriert seit: 11. Jul 2009
57 Beiträge
 
Delphi XE Professional
 
#16

AW: Bildbearbeitung mit Delphi

  Alt 9. Jun 2011, 22:24
Delphi-Quellcode:
procedure JPEGtoBMP(const FileName: TFileName);
var jpeg : TJPEGImage;
    bmp : TBitmap;
begin
  jpeg := TJPEGImage.Create;
  try
    jpeg.CompressionQuality := 100; {Default Value}
    jpeg.LoadFromFile(FileName);
    image1.Assign(jpeg);
  finally
    jpeg.Free
  end;
end;

annsonsten Dieses Forum durchsuchen png als stichwort
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Bildbearbeitung mit Delphi

  Alt 10. Jun 2011, 08:21
Wie ist es hiermit?
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
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#18

AW: Bildbearbeitung mit Delphi

  Alt 10. Jun 2011, 19:28
@DeddyH: Bei deinem code bekomme ich in folgender Zeile   Assert(Assigned(src) and Assigned(dest)); einen Error:
Code:
Erste Gelegenheit für Exception bei $759DB727. Exception-Klasse EAssertionFailed mit Meldung 'Assertion fehlgeschlagen ([i]pfad[/i], Zeile 41)'. Prozess Project1.exe (2320)
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Bildbearbeitung mit Delphi

  Alt 10. Jun 2011, 19:41
Hast Du denn auch eine Quell- und eine Zielgrafik übergeben (beide müssen bereits erzeugt worden sein)?
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
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#20

AW: Bildbearbeitung mit Delphi

  Alt 10. Jun 2011, 19:49
Ich mache das so:
StretchGraphic(Image1.Picture.Graphic,Image2.Picture.Graphic,30,30,False); Wobei Image2 leer ist
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 17:24 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