Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bild einlesen überprüfen, und neu zusammensetzen (https://www.delphipraxis.net/195216-bild-einlesen-ueberpruefen-und-neu-zusammensetzen.html)

Michael80 12. Feb 2018 19:38

Bild einlesen überprüfen, und neu zusammensetzen
 
Hallo Zusammen,

ich stehe grade etwas auf dem Schlauch. Meine Kinder haben gerade Bügelperlen für sich entdeckt, und ihnen fallen immer interessantere Sachen ein die Sie damit machen wollen. Nun dachte ich mir: Delphi is ja da, schreibst halt ein Programm fürs umwandeln in der Rohbilder in Bügelperlen-Muster.

Das einzige Problem ich habe mich mit Bildern/Manipulation in Delphi noch überhaupt nicht beschäftigt. Wie würdet ihr vorgehen?

Ablauf:

- Das Bild jpg/bmp einlesen
- verfügbare Perlenfarben auswählen (RGB Werte in Array mit Bennenungszahlen dazu ?) braun=20, Orange=38
- Endgröße in Perlenanzahl angeben LxB - Seitenverhältnis behalten Ja/nein
- Bild anhand der ausgewählten Perlenfarben redzuieren
- neues Bild anlegen als Raster mit Farbe und Farbcode, incl. der möglichkeit einzelne Raster zu verändern
- Fertigen "Plan" drucken

Danke im Voraus ;)
Michael

Luckie 12. Feb 2018 20:29

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Und wo ist jetzt dein Problem? Mach doch einfach das, was du uns Schritt für Schritt dargelegt hast.

Michael80 13. Feb 2018 10:32

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Danke Lucky, das war genau die Antwort auf die ich gewartet habe :thumb: Super alle Probleme beseitigt :thumb:

:evil:

Luckie 13. Feb 2018 10:54

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Ja. Wie sollen wir denn jetzt helfen? Sollen wir dir das Programm schreiben? :roll:

EWeiss 13. Feb 2018 11:07

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Michael80 (Beitrag 1393729)
Danke Lucky, das war genau die Antwort auf die ich gewartet habe :thumb: Super alle Probleme beseitigt :thumb:

:evil:

Nun du hast nur eine Aufzählung der dir vorschwebenden Ideen erstellt.
Von Problemen diesbezüglich jedoch nichts.

Wie lautet deine Fragestellung noch mal?
Wie der Vorredner schon sagte.
Zitat:

Ja. Wie sollen wir denn jetzt helfen? Sollen wir dir das Programm schreiben?
Keine Ahnung was du nun erwartest.

gruss

jobo 13. Feb 2018 11:17

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Michael80 (Beitrag 1393679)
Das einzige Problem ich habe mich mit Bildern/Manipulation in Delphi noch überhaupt nicht beschäftigt. Wie würdet ihr vorgehen?

Ablauf:
...

Lesen ist ja scheinbar auch nicht so einfach.
"Wie würdet Ihr vorgehen?"
Ist das keine Frage oder Problem?

Man kann es offenbar nie richtig machen, entweder man erhält solche Antworten wie hier, oder im nächsten Thread heißt es dann bei einer speziellen Frage, ja was soll das eigentlich, wozu brauchst Du das, beschreib doch mal das ganze Problem, vielleicht geht es ja anders besser..

Ich halte mal fest, 2 Delphispezialisten haben am Vorgehen des TE nichts auszusetzen. Also kann er loslegen. Der Rest ist offenbar für die Tonne.

EWeiss 13. Feb 2018 11:26

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Ist das keine Frage oder Problem?
Schließe mich nochmal den Vorredner an.

Zitat:

Und wo ist jetzt dein Problem?
Zitat:

Ich halte mal fest, 2 Delphispezialisten haben am Vorgehen des TE nichts auszusetzen.
Ich muss mal gegen halten du zählst dich bestimmt nicht dazu oder? :lol:

Zum Thema ich sehe keine Problem Beschreibung.
Nur das man sich noch nicht mit Bildern/Manipulation beschäftigt hat.
Aber das kann man doch einfach ändern in dem man es einfach versucht und anschließend seine Fragen stellt wenn man nicht weiter kommt.

Sollte doch kein Problem sein.
Somit gibt es kein Problem (noch nicht)

gruss

Jasocul 13. Feb 2018 11:43

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Michael80 (Beitrag 1393679)
Wie würdet ihr vorgehen?

Mein ernst gemeinter Vorschlag:
Entweder Photoshop mit Mosaik-Filter nutzen oder ein fertiges Programm kaufen. Da gibt es eins für unter 50 Euro.

Wenn du mit Bild-Verarbeitung in Delphi keine Erfahrung hast, musst du dich erstmal damit beschäftigen. das wird schon einiges an Zeit verbrauchen. Dazu kommt, dass dein Ablauf die Kreativität einschränkt (vorgegebene Farben).
Willst du die Stunden/Tage, die du für die Entwicklung brauchst nicht lieber mit deinen Kindern verbringen?

Ansonsten würde ich erstmal die Fotos einlesen, auf das vorgegebene Format Rastern und ausdrucken.
Den Rest solltest du der Kreativität deiner Kinder überlassen.

Michael80 13. Feb 2018 13:18

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Jasocul (Beitrag 1393740)
Zitat:

Zitat von Michael80 (Beitrag 1393679)
Wie würdet ihr vorgehen?

Wenn du mit Bild-Verarbeitung in Delphi keine Erfahrung hast, musst du dich erstmal damit beschäftigen. das wird schon einiges an Zeit verbrauchen. Dazu kommt, dass dein Ablauf die Kreativität einschränkt (vorgegebene Farben). Willst du die Stunden/Tage, die du für die Entwicklung brauchst nicht lieber mit deinen Kindern verbringen?

Ich würde ja hier nicht Fragen wenn ich das nicht wollen würde, oder?

- es gibt auch irgenwas für 10€ aber das macht nicht was ich will.
- vorgegebene Farben müssen sein, da das von den verfügbaren Perlenfarben abhängig ist.
- mit wem oder was ich meine Zeit verbringe is ja wohl mein Problem, oder?

Eigentlich dachte ich es kommt eine Antwort wie:

Probiers mal mit Komponenten XY, mach Z, aber anscheinend ist das hier mittlerweile zuviel verlangt.

Früher wurde mal was gepostet und man konnte sichs draus erarbeiten, gut vielleicht erwarte ich mir von einem Forum zuviel.

Schade drum

Neutral General 13. Feb 2018 13:31

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Michael80 (Beitrag 1393754)
Zitat:

Zitat von Jasocul (Beitrag 1393740)
Zitat:

Zitat von Michael80 (Beitrag 1393679)
Wie würdet ihr vorgehen?

Wenn du mit Bild-Verarbeitung in Delphi keine Erfahrung hast, musst du dich erstmal damit beschäftigen. das wird schon einiges an Zeit verbrauchen. Dazu kommt, dass dein Ablauf die Kreativität einschränkt (vorgegebene Farben). Willst du die Stunden/Tage, die du für die Entwicklung brauchst nicht lieber mit deinen Kindern verbringen?

Eigentlich dachte ich es kommt eine Antwort wie:

Probiers mal mit Komponenten XY, mach Z, aber anscheinend ist das hier mittlerweile zuviel verlangt.

Früher wurde mal was gepostet und man konnte sichs draus erarbeiten, gut vielleicht erwarte ich mir von einem Forum zuviel.

Ich weiß echt nicht was du hier von uns erwartest.
In deinem Ursprungspost war keine einzige Frage. Nur ein grober Plan den du dir schon ausgedacht hast zu einem Problem was du angehn willst.
Dir wurde gesagt dass der Plan soweit gut ist. Was willst du mehr? Es existiert ja bisher noch kein Fehler und noch kein Problem.
Du hast nicht mal angefangen zu programmieren.

Ein Forum ist da um bei einem konkretes Problem oder einem konkreten Fehler zu helfen, nicht um dich Schritt für Schritt durch die Programmierung zu führen und jede deiner Entscheidungen einzeln abzunicken.

Ich verstehe nicht warum du nicht (zumindest nachdem dein vorgelegter Plan von uns abgenickt wurde) einfach mal versucht hast das geplante umzusetzen.
Bei Problemen hätten wir dann weiterhelfen können.
Du kannst nicht erwarten dass wir für dich schon ein Grundgerüst deines Programmes programmieren was du dann nur noch anpassen musst.

Keine Ahnung. Deine Erwartungen an ein Forum sind vollkommen unrealistisch und deine Reaktion darauf dass dir niemand bei deinem nicht vorhandenen Problem (???) hilft ist auch unnötig aggressiv... :roll:

Redeemer 13. Feb 2018 13:40

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.

Jasocul 13. Feb 2018 14:39

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Michael80 (Beitrag 1393754)
Probiers mal mit Komponenten XY, mach Z, aber anscheinend ist das hier mittlerweile zuviel verlangt.

Ich habe mal für dich Google benutzt.
https://www.imageen.com/

TiGü 13. Feb 2018 15:32

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.

TiGü 13. Feb 2018 15:40

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Ansonsten vielleicht den ersten Google-Treffer für "Bügelbild Konverter" verwenden:
http://camerakind.blogspot.de/2015/0...fotos-diy.html

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).

Redeemer 13. Feb 2018 15:44

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Michael80 (Beitrag 1393679)
Ich möchte keine 10 Euro für ein bereits existierendes Programm ausgeben.

Zitat:

Zitat von Jasocul (Beitrag 1393758)
Kauf dir doch für 400 Dollar plus MwSt eine Komponente!

Delphi-PRAXiS at its best.

himitsu 13. Feb 2018 15:48

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
Bei Google suchendelphi resize image smooth

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

Michael80 13. Feb 2018 17:48

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

himitsu 13. Feb 2018 18:21

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 Bei Google suchenFotomosaik.
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:

Michael80 13. Feb 2018 22:27

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.

Jasocul 14. Feb 2018 07:21

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Jasocul (Beitrag 1393740)
Zitat:

Zitat von Michael80 (Beitrag 1393679)
Wie würdet ihr vorgehen?

Ansonsten würde ich erstmal die Fotos einlesen, auf das vorgegebene Format Rastern und ausdrucken.

Komisch, mir kommt es vor, als würden die anderen genau das, was ich vorgeschlagen habe, in ihrem Code/Erklärungen vorkauen.
Sorry, dass ich dir keinen Code geliefert habe.
btw:
Zitat:

Zitat von Jasocul (Beitrag 1393758)
Kauf dir doch für 400 Dollar plus MwSt eine Komponente!

Das habe ich nie geschrieben. Du hattest geschrieben, dass du erwartest, dass man dir eine Komponente xy nennt, mit der du z machen sollst. Ich habe die den Link zu einer entsprechende Komponente geliefert. Nicht mehr und nicht weniger.

TiGü 14. Feb 2018 08:02

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
Zitat:

Zitat von Michael80 (Beitrag 1393773)
- 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.

Schaue dir trotzdem das Programm aus den Beitrag Nummer 14 an.
So bekommst du zumindest eine Idee, wie sowas umgesetzt werden kann.
Klar ist das für Kreuzstich, aber das Grundprinzip ist ja exakt das gleiche.

Michael80 14. Feb 2018 20:48

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
ja Peter alles gut, ich habs kapiert, Danke

Ja TiGü das Programm kenn ich. Grundsätzlich gings mir wirklich im Codebrocken, da ich bei Bilder wirklich nicht weiß/wusste wie ich hätte Anfangen sollen, ich denke dass ich so zumindest einen Ansatz habe auf dem ich aufbauen kann.

bernhard_LA 14. Feb 2018 22:15

AW: Bild einlesen überprüfen, und neu zusammensetzen
 
im swiss delphi center ist der source code um eine Bitmap -zu -resamplen hier
http://www.swissdelphicenter.ch/de/showcode.php?id=2403


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