AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zwei übereinander liegende Bilddateien trennen !!!
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei übereinander liegende Bilddateien trennen !!!

Offene Frage von "hanvas"
Ein Thema von 33Olli33 · begonnen am 26. Feb 2016 · letzter Beitrag vom 27. Feb 2016
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#11

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 18:42
Ansonsten 5 Min...
Für die Programmierung - nicht für den Vergleich, oder?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
33Olli33

Registriert seit: 26. Feb 2016
12 Beiträge
 
#12

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 18:43
Da muss beim hochladen das eine Bild wohl ein paar Pixel verloren haben.
Beide sind 800 x 605 pixel auf meinem Laptop.
Über Paint kann ich doch bestimmen, welche Farbe innerhalb des QR-Codes verwendet wird.
Gibt es die Möglichkeit, alle betreffenden Farben in z.B. pink umzuändern?
Sowie suchen und ersetzen bei Word?
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 18:51
Ansonsten 5 Min...
Für die Programmierung - nicht für den Vergleich, oder?
Sehr witzig...

Bitte mal beide Bilder als BMP zum zippen. (Ein Bilderupload macht daraus immer jpg's)
Angehängte Grafiken
Dateityp: jpg QRCode.jpg (28,8 KB, 24x aufgerufen)

Geändert von Mavarik (26. Feb 2016 um 18:58 Uhr)
  Mit Zitat antworten Zitat
33Olli33

Registriert seit: 26. Feb 2016
12 Beiträge
 
#14

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 19:11
Der macht beim einstellen der beiden Bilder aus BMP jetzt JPG. Will also nur JPG runterladen.
Das funktioniert nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 19:11
Der macht beim einstellen der beiden Bilder aus BMP jetzt JPG. Will also nur JPG runterladen.
Das funktioniert nicht.
s.o. Zippen
  Mit Zitat antworten Zitat
33Olli33

Registriert seit: 26. Feb 2016
12 Beiträge
 
#16

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 19:29
Sorry, da bin ich Nerd. Was bedeutet BMP zum zippen? Habe die beiden Bilder als .bmp-Datei gespeichert.
Und wie gehts getzt weiter?
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#17

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 19:32
Sorry, da bin ich Nerd. Was bedeutet BMP zum zippen? Habe die beiden Bilder als .bmp-Datei gespeichert.
Und wie gehts getzt weiter?
Rechte Maustaste in den Ordner,

Datei/neu/Zip-komprimierter Ordner

Beide Bilder per Drag and Drop in den Zipordner rein ziehen und den Zip-File hier hochladen...
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#18

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 20:48
Interessante Aufgabe.

Deine Bilder sind allerdings nicht wirklich identisch überlagert, sondern sind in den Ausmaßen unterschiedlich (auch sind die Pixel leicht verschoben).

Zum Testen daher anliegend Dein Originalbild und ein Neues Bild, bestehend aus dem Originalbild mit einem QR-Code hinterlegt (aus meiner Terminverwaltung einfach einen Termin-QR-Code erstellt), leicht transparent.

Mit der nachfolgenden Funktion kann man den QR-Code da raus extrahieren:

Delphi-Quellcode:
type
  TRGBALine = array[word] of TRGBQuad;
  PRGBALine = ^TRGBALine;
  
  tBuff3Char = array [0..2] of AnsiChar;
  TBufTripleCharArray = array [0..32768] of TBuff3Char;
  pBufTripleCharArray = ^TBufTripleCharArray; // Pointer auf TRGBTripleArray


function GetNewPicFromDifferences (OrgPic, NewPic, BDif: TBitmap): Boolean;
var
  x, z, Y: Integer; RGBAOrg, RGBANew, RGBADif: pRGBALine;
  LineOrg, LineNew, LineDif : pBufTripleCharArray;
begin
  Result := FALSE;

  if OrgPic.PixelFormat = pf32Bit then begin

    RGBAOrg := OrgPic.Scanline[OrgPic.Height-1];
    RGBANew := NewPic.Scanline[OrgPic.Height-1];
    RGBADif := BDif.Scanline[OrgPic.Height-1];

    z := OrgPic.Width * OrgPic.Height;

    for x := 0 to z-1 do begin
      if Integer (RGBAOrg^[x]) <> Integer (RGBANew^[x]) then begin
        Result := True;
        RGBADif^[x].rgbBlue := 0;
        RGBADif^[x].rgbred := 0;
        RGBADif^[x].rgbgreen := 0;
        RGBADif^[x].rgbReserved := 255;
      end;
    end;
  end;

  if OrgPic.PixelFormat = pf24Bit then begin
    for y := 0 to OrgPic.Height - 1 do begin
      LineOrg := OrgPic.ScanLine[y];
      LineNew := NewPic.ScanLine[y];
      LineDif := BDif.ScanLine[y];

      for x := 0 to OrgPic.Width - 1 do begin
        if LineOrg[x] <> LineNew[x] then begin
          result:= True;
          //LineDif[x] := LineNew[x];

          LineDif[x][0] := AnsiChar (0);
          LineDif[x][1] := AnsiChar (0);
          LineDif[x][2] := AnsiChar (0);
        end;
      end;
    end;
  end;
end;
Wobei ich die 32-Bit-Variante nicht getestet habe.

Die Funktion setzt voraus, dass alle Bitmaps die gleiche Größe und das gleiche Pixelformat haben, musst Du also vorher abprüfen. In Orgpic muss das Originalbild geladen werden, in NewPic das, welches das Originalbild plus den überlagerten QR-code hat. In BDif erhältst Du den extrahierten QR-Code. Mein iPhone konnte den extrahierten QR-Code einlesen und richtig auswerten.

Aber die Funktion funktioniert nur, wenn Original-Bild und neues Bild sich wirklich nur durch den hinterlegten QR-Code unterscheiden. Wenn im neuen Bild alle Pixel verschoben sind (was bei Deinem Demo-Bild der Fall ist), funktioniert die Variante hier nicht.
Angehängte Dateien
Dateityp: zip Pics.zip (2,38 MB, 18x aufgerufen)
  Mit Zitat antworten Zitat
33Olli33

Registriert seit: 26. Feb 2016
12 Beiträge
 
#19

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 20:52
Bitte um Entschuldigung, es war Stromausfall.
  Mit Zitat antworten Zitat
33Olli33

Registriert seit: 26. Feb 2016
12 Beiträge
 
#20

AW: Zwei übereinander liegende Bilddateien trennen !!!

  Alt 26. Feb 2016, 20:54
Habe auch ein Iphone5. Mit welchem App hast Du das auslesen können? Meine können das nicht lesen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 05:39 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