![]() |
AW: Bild einlesen überprüfen, und neu zusammensetzen
Man braucht keine Komponenten dafür. Hier reicht das simple Standard-Canvas von Delphi, insbesondere solange du kein Floyd-Steinberg oder Stukki machen möchtest sondern Nearest-Neighbor mit linearer oder quadratischer Abweichungsberechnung.
Ich verstehe nicht mal genau, warum man dafür Delphi braucht. Viel einfacher: Einmalig durchzuführen: - Nimm dir ein Grafikprogramm deiner Wahl, zeichne alle verfügbaren Farben ein und speichere die Datei als PNG. - Lass PNGOUT einmal nur mit Force-Parameter (weil kleine Palettenbilder größer sind als Echtfarben) durchlaufen, um eine Palette zu erstellen. - Exportiere die Palette mit einem Grafikprogramm deiner Wahl, z.B. IrfanView. Für jedes Bild durchzuführen: - Lade dein gewünschtes Bild. - Stelle die Größe ein. - Importiere die Palette. Das mit der Zuordnung der Farben zu den Nummern dürfte doch jeder auch so hinkriegen. |
AW: Bild einlesen überprüfen, und neu zusammensetzen
Zitat:
![]() |
AW: Bild einlesen überprüfen, und neu zusammensetzen
Ein erster Ansatz. Der Anfang ist halt immer das Schwierigste:
Delphi-Quellcode:
unit Unit2;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Imaging.jpeg; type TForm2 = class(TForm) Image1: TImage; procedure Image1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} const // Bügelperlen-Steckplatten Höhe cHeight = 30; // Bügelperlen-Steckplatten Breite cWidth = 30; procedure TForm2.Image1Click(Sender: TObject); var ImageFileName: string; TransformedBitmap: TBitmap; DestinationRect: TRect; OrignialPicture: TPicture; begin OrignialPicture := TPicture.Create; try // hier muss der Pfad zur Bildatei rein! ImageFileName := 'C:\Users\...blablabla'; OrignialPicture.LoadFromFile(ImageFileName); TransformedBitmap := TBitmap.Create; try TransformedBitmap.SetSize(OrignialPicture.Width, OrignialPicture.Height); DestinationRect := Rect(0, 0, cWidth, cHeight); TransformedBitmap.Canvas.StretchDraw(DestinationRect, OrignialPicture.Graphic); // der Zaubertrick: TransformedBitmap.SetSize(cWidth, cHeight); // Bild in TImage auf Formular anzeigen: Image1.Picture.Assign(TransformedBitmap); // auf Farbpaletten, Seitenverhältnis, abspeichern und ausdrucken kommen wir dann zu sprechen, wenn du soweit bist! finally TransformedBitmap.Free; end; finally OrignialPicture.Free; end; end; end. |
AW: Bild einlesen überprüfen, und neu zusammensetzen
Ansonsten vielleicht den ersten Google-Treffer für "Bügelbild Konverter" verwenden:
![]() Die darin beschriebene Demo-Version der Software kann zwar nicht abspeichern oder ausdrucken, aber das ist ja nun kein wirkliches Hindernis (Druck-Taste -> Paint -> Drucker). |
AW: Bild einlesen überprüfen, und neu zusammensetzen
Zitat:
Zitat:
|
AW: Bild einlesen überprüfen, und neu zusammensetzen
Spezialkomponenten sind ja nicht unbedingt nötig.
Das Bild runterrechnen (zoom) auf das gewünschte Format/Größe ... am Besten gleich 1 Pixel = eine Perle ![]() Wenn Bild auf Größe der Perlen (x*x Pixel = eine Perle) oder garnicht runtergerechnet, dann im Bereich einer Perle den Farb-Mittelwert der Pixel berechnen. Dann für diese Farbe (des einen Pixel oder Mittelwert der Pixel) die Farbe der Perle bestimmen, welche dem am nächsten kommt. bei 1 Pixel oder ungezoomt > Perlen in neues Bild zeichnen bei x*x Pixel > die x*x Pixel mit der einen Perle übermalen und vorher den Hintergrund dort löschen ganz billig: * Bild mit Interpolation auf 1 Pixel pro Perle zoomen * Bild ohne Interpolation auf x*x Pixel pro Perle vergrößern * sich gedanklich (nach dem Drucken) selbstständig zum großen Pixel die ähnlichste Pixelfarbe ausdenken |
AW: Bild einlesen überprüfen, und neu zusammensetzen
Danke TiGü und Himitsu,
das is so ungefähr das was ich unter konstruktiv verstehe :p ich werd mich dann mal dran versuchen, zumindest habe ich jetzt mal irgendwo ein Sprungbrett. - warum ich net kaufen will? Weils mich interessiert wie ich das umsetzen kann. ausserdem machen die kaufbaren Programme nicht das was ich will, das eine ist für Stickerei ausgelegt das andere rechnet die Bilder nicht so um wies sein soll. @TiGü ich komme auf ein Angebot zurück wenn ich soweit bin :-D |
AW: Bild einlesen überprüfen, und neu zusammensetzen
Die Perlen sind ja recht groß, aber wenn das Bild am Ende hochauflösend genug ist, dann könnte man noch sowas machen, wie es die Drucker schon ewig praktizieren.
Die rechnen nicht die Farben 1:1 in ihre Farben der Druckerpatronen um, sondern berechnen ein Muster. Also statt eine "blau" Fläche nur mit "blauen" Punkten/Perlen zu füllen, wird ein Muster berechnet, also mehrere Punkte/Perlen verschiedenster Farbe ergeben dann den gewünschten Blauton. > z.B. für Hellblau 20 blaue und 10 weiße Perlen ... bissl "zufällig" verteilt, damit keine regemäßige Struktur entsteht. Das ganze Problem kann man sogar noch verdoppeln und schon nennt es sich ![]() Also wie hier das Bild umgerechnet und durch farbige Einzelteile ersetzt, nur dass hier keine "reinen" Farbpunkte verwendet werden, sondern dass man sich vorher viele Bilde nahm und von denen jeweils den Farbmittelwert verwendet. Hier könnte nun jemand auch einfach Fotos seiner Perlen benutzen. :lol: |
AW: Bild einlesen überprüfen, und neu zusammensetzen
ja, theoretisch ginge das, dann sind wir aber paar Jahre weiter, dass meine die 2mm perlen verwenden können :P
da gibt es schon schöne Kunstwerke mit 1m x 1m :thumb: mit den großen Perlen ist das schier unmöglich, da das ganze einfach zu grob wirkt. |
AW: Bild einlesen überprüfen, und neu zusammensetzen
Zitat:
Sorry, dass ich dir keinen Code geliefert habe. btw: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 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