Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Vektorgrafik erstellen und skalieren (https://www.delphipraxis.net/143734-vektorgrafik-erstellen-und-skalieren.html)

xXFelixXx 22. Nov 2009 08:22


Vektorgrafik erstellen und skalieren
 
Hallo!

Wisst ihr, wie man in Delphi eine Vektorgrafik erstellen und dann stufenlos skalieren kann :?: :?: :?:

In meinem Programm soll

- eine NICHT Vektorgrafikdatei (z.B. jpg oder bmp) geöffnet werden
- sie dann in ene Vektorgrafik umgewandelt werden
- dann prozentual vergrößert/verkleinert werden (am besten schon mit enthaltenem Bildlauf)
- sie dann entweder als svg oder bereits skaliert als jpg/bmp gespeichert werden

Ich bin auf dem Gebiet noch absoluter Neuling und weiß noch nicht mal, ob so etwas in Delphi realisierbar ist. Auf schnelle Hilfe würde ich mich freuen,

Felix

P.S.: Ich hab schon bei Google und hier gesucht, aber nichts wirklich brauchbares gefunden... :wall:

jfheins 22. Nov 2009 08:26

Re: Vektorgrafik erstellen und skalieren
 
das sollte mit Delphi realisierbar sein ;)

Der größte Brocken ist definitiv die Vektorisierung - vollautomatisch geht da so gut wie gar nichts bei komplexeren Bildern.

Medium 22. Nov 2009 16:36

Re: Vektorgrafik erstellen und skalieren
 
Einer der einfacheren Kantendetektoren (~=Vektorisierer) ist z.B. der Canny Edge-Detector.

xXFelixXx 24. Nov 2009 14:56

Re: Vektorgrafik erstellen und skalieren
 
Zitat:

Zitat von Medium
Einer der einfacheren Kantendetektoren (~=Vektorisierer) ist z.B. der Canny Edge-Detector.

:wiejetzt:

:glaskugel: Ähhh... Ja... Und wie setzt man das in Delphi um/extrahiert daraus die geometrischen Formen? Außerdem: Wie setzt man dann noch Farbe da rein. :gruebel:

Jakob Ullmann 24. Nov 2009 15:14

Re: Vektorgrafik erstellen und skalieren
 
Hi!

Ich kenne den Canny-Algorithmus nicht, aber laut der Beschreibung auf Wikipedia wäre das lediglich der erste Schritt beim Vektorisieren.

Abgesehen davon ist ein Vektorisierer kein Programm, das eine Rastergrafik in eine Vektorgrafik umwandeln soll: Es soll einem lediglich die Pfade erstellen, die man dann weiterverarbeiten kann. Das ist ein großer Unterschied.

Falls du aber lediglich vektorisieren, dich aber nicht selbst drum kümmern willst, kannst du auch einfach einen eigens darauf spezialisierten Vektorisierer drüberlaufen lassen. Die besten Ergebnisse im Open-Source Bereich wirst du wahrscheinlich mit Potrace erzielen. Ein billiges Vektorisieren, wie es zum Beispiel auch OpenOffice.org Draw macht, kannst du leicht selbst erstellen, aber ein komplexeres Vektorisieren, was auch wirklich mal brauchbar sein wird (wie es zum Beispiel Potrace ausgibt), dürfte schwierig werden.

Bezüglich Vektorgrafiken allgemein: Am Einfachsten wird es sein, du schaust dir mal
Delphi-Quellcode:
TMefaFile
und
Delphi-Quellcode:
TMetaFileCanvas
an.

Sherlock 24. Nov 2009 15:15

Re: Vektorgrafik erstellen und skalieren
 
Zitat:

Zitat von xXFelixXx
:glaskugel: Ähhh... Ja... Und wie setzt man das in Delphi um/extrahiert daraus die geometrischen Formen?

Für sowas werden Entwickler in der Regel gut bezahlt. Will meinen: Das ist die Aufgabe - Setz Dich dran und stell im Verlauf konkrete Fragen.
;)
Sherlock

Medium 24. Nov 2009 15:19

Re: Vektorgrafik erstellen und skalieren
 
Die Frage ist eher: Wie ist dein Kenntnisstand, sowohl in Sachen Delphi als auch in Mathe? Das ganze ist schon eine nicht mehr ganz so triviale Aktion, und ich hab nen Canny in C# mit allem was man so drum herum noch braucht in ca. 2500 Zeilen Code gegossen (was u.a. auch so Späße wie eine Float-Bitmap Klasse und ein paar andere Filter und Annäherung der Kanten mit Catmull-Rom-Splines beinhaltet). Das hat auch seine Zeit gebraucht, obwohl ich im Moment ziemlich im Thema stecke (das wird Teil meiner Diplomarbeit).

Wenn du also z.B. keine Idee hast, wie man eine Faltung umsetzt (bzw. was das überhaupt ist), dann müsstest du relativ tief mitm Lernen ansetzen. "Wie setz ich das um" ist hier etwas arg allgemein gefragt ;).

...ui, der rote Kasten! Eine externe Lib zum tracen wäre natürlich auch ein Weg um schnell dahin zu kommen. Spannend ist dann allerdings immer noch die Frage, wie du von einem Kantenbild wieder zu einer vollflächig gefärbten Grafik kommst. Eine Möglichkeit wäre es, die extrahierten Kanten einfach in das normal vergrößerte Bitmap einzuzeichnen. SSpline (ein Programm dass genau das tut was dir vorschwebt) macht das zumindest grob ähnlich wenn ich das richtig gesehen hab (ist schon wieder n paar Jährchen her - gott binnsch alt :shock:).

Edit: Ha, schönes Detail. Als ich auf den roten Kasten hin was dazu geschrieben hab, kam Sherlock. Dann hieß es im Kasten "schon wieder (!)" - noch nie gehabt :D

Blup 24. Nov 2009 15:27

Re: Vektorgrafik erstellen und skalieren
 
Zitat:

Zitat von xXFelixXx
- eine NICHT Vektorgrafikdatei (z.B. jpg oder bmp) geöffnet werden
- sie dann in ene Vektorgrafik umgewandelt werden

Bevor man eine Zeile in welcher Programmiersprache auch immer schreibt, muss man das Problem und den Lösungsansatz erst einmal verstanden haben. Bei der Aufgabe(2.Zeile) kann das durchaus einige Jahre Studium bedeuten...

MacJoe 16. Dez 2009 19:31

Re: Vektorgrafik erstellen und skalieren
 
Hallo,
wie wärs mit c#.
Es gibt einen vollständigen Algorithmus geschrieben in c# unter http://drawing3d.de/Downloads.aspx
Umschreiben in Delphi wäre vielleicht der Mühe wert... :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:01 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