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
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Bildbearbeitung mit Delphi

  Alt 6. Jun 2011, 09:04
Wer diesen Thread hier liest, der bekommt doch mal wieder das Vorurteil ggü. Delphi-Programmierern bestätigt, dass diese alles ihre Komponenten erledigen lassen und ihre Programme zusammenklicken!

Das hier ist doch wirklich keine großartige Aufgabe. Dafür braucht niemand irgendwelche Super-Komponenten oder GDI+ oder sonstiges.

Das Bild per MSDN-Library durchsuchenStretchBlt vom Image auf ein größeres Bitmap kopieren (auch mal hier in der DP suchen!)
Mit ner verschachtelten Schleife + Scanline alle Pixel durchgehen und nach irgendwelchen Kriterien (die ja nur der Thread-Ersteller momentan kennt) die Pixel nach und nach durch andere ersetzen.

fertig.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Jens01

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

AW: Bildbearbeitung mit Delphi

  Alt 6. Jun 2011, 09:55
Zitat:
Wer diesen Thread hier liest, der bekommt doch mal wieder das Vorurteil ggü. Delphi-Programmierern bestätigt, dass diese alles ihre Komponenten erledigen lassen und ihre Programme zusammenklicken!
Ich möchte keine Diskussion anfangen, aber wo sollte soetwas ein Vorurteil oder etwas Negatives sein, wenn man gute Komponenten/ Objekte nimmt und diese arbeiten läßt. Wenn Du sowas nicht machst, würdest Du kein größeres Programm hinbekommen. Du programmierst Dir das OS (Windows/Linux usw) ja auch nicht jedes mal neu.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Bildbearbeitung mit Delphi

  Alt 6. Jun 2011, 09:58
@Jens01: Nö, aber man muss sich nicht für jeden Mist direkt ne Komponente installieren, wenn mans auch grad selbst machen kann. Ich finde Programmierer sollten nämlich zumindest noch ein bisschen programmieren können...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Jens01

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

AW: Bildbearbeitung mit Delphi

  Alt 6. Jun 2011, 10:10
Okay, ich selbst bin zumindest kein Informatiker...
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: Bildbearbeitung mit Delphi

  Alt 6. Jun 2011, 10:16
@Jens01: Nö, aber man muss sich nicht für jeden Mist direkt ne Komponente installieren, wenn mans auch grad selbst machen kann. Ich finde Programmierer sollten nämlich zumindest noch ein bisschen programmieren können...
Das möcht ich zu 100% unterschreiben!
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

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

AW: Bildbearbeitung mit Delphi

  Alt 6. Jun 2011, 18:54
@Jens01: Nö, aber man muss sich nicht für jeden Mist direkt ne Komponente installieren, wenn mans auch grad selbst machen kann. Ich finde Programmierer sollten nämlich zumindest noch ein bisschen programmieren können...
Das möcht ich zu 100% unterschreiben!
Und genau das werde ich versuchen. Das ganze mit der mitgelieferten TImage Komponente zu tun. Bei kurzem schauen mit Bildbearbeitung in Delphi (DT) hab ich gesehen, dass man Pixel einzeln ansprechen kann. Mein Problem ist nur, dass Bild zu verkleinern und nachher ein neues Bild zu erstellen, anhand der neuen Pixelfarbe. Aber ich werde mich mal schlau machen.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
zeras

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

AW: Bildbearbeitung mit Delphi

  Alt 6. Jun 2011, 19: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
 
#8

AW: Bildbearbeitung mit Delphi

  Alt 9. Jun 2011, 18: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
 
#9

AW: Bildbearbeitung mit Delphi

  Alt 9. Jun 2011, 18: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 18:36 Uhr)
  Mit Zitat antworten Zitat
freeway

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

AW: Bildbearbeitung mit Delphi

  Alt 9. Jun 2011, 19: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
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 13:41 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