Frage

die Art und Weise Facebook tut es

Ich brauche eine Möglichkeit, um Fotos in einer Delphi-Desktop-Anwendung zu markieren.

Das schließt eine Möglichkeit, einfach die Tags über das Volk hinzufügen und dann auf dem Foto mit der Maus über die Person schwebt den Tag zu zeigen.

Die beiden Vorschläge in der Antwort auf: „ Delphi-Komponenten für Gesichtserkennung und Tagging “nicht, dies lösen.

Aber ich habe keine Ahnung, wo ich anfangen soll, und habe es nicht gelungen, Ideen, die im Internet zu finden, wie dies zu tun. Wie funktioniert Facebook es tun? Oder vielleicht gibt es eine Komponente für Delphi, die es ermöglichen wird.

Was wäre der beste Weg, um zu versuchen, Facebook-like-Tagging zu implementieren?


P. S. Dies sind einige der Facebook-API-Definition für diese: http: //wiki.developers. facebook.com/index.php/Photos.addTag

Hier ist ein Java-Programm, das das Gesicht Tagging-Funktionalität implementiert, die ich in meinem Delphi app tun: fb-Foto-Uploader

War es hilfreich?

Lösung

Die wichtigsten Parameter des API Sie zitiert sind die Bild-ID, die Koordinaten und der Tag. Der Tag kann entweder die Benutzer-ID eines Facebook-Nutzer sein, oder es kann Freitext (für den Fall, wenn das markierte Objekt nicht ein Facebook-Benutzer) sein. Face verwendet nur eine Koordinate, weil es feste Größe Regionen verwendet einen markierten Bereich zu bezeichnen; die Idee ist, dass man in der Mitte der das Gesicht einer Person klicken und Facebook speichert nur diesen Punkt.

Wenn Sie ein Bild in einer TImage Control Display (das ist die offensichtliche erste Wahl, nachdem alle), können Sie Mausklicks mit den OnMouseDown und OnMouseUp Ereignissen erfassen. (Das OnClick Ereignis ist einfacher, aber sagt Ihnen nicht, um die Koordinaten.) Wenn Sie einen Punkt erworben haben, aufgefordert, für ein Label, diesen Punkt zu begleiten. Sie können vorgegebene Etiketten verwenden, wie Facebook-Benutzer-IDs, oder einfach nur normalen Text verwenden, oder etwas von Ihrem eigenen Planen verwenden. Die Frage, was Sie verwenden, um einen Tag-Wert darzustellen, ist orthogonal zu, was andere Fragen, die Sie bisher gefragt haben.

Die andere Hälfte des Foto-Tagging von Facebook ist, dass die Maus über das Bild bewegt das Bild zeigt den Tag-Text über, und die Maus über die Etiketten unter Highlight der zugehörigen Regionen bewegt. Griff OnMouseMove Ereignisse und einige Code schreiben, um ein- oder ausblenden Etiketten und Formen, wie angemessen. Wenn Sie TLabel und TShape verwenden, können Sie nicht einmal, um das Bild zu ändern, aber die Bedienelemente auf der Oberseite des Bildes zeigen möglicherweise mit weiteren OnMouseMove Ereignissen für das Bild stören. Es sollte nicht zu lange dauern, einige Experimente, um zu versuchen und sehen, was für Sie arbeitet.

Andere Tipps

lkessler, ich habe gerade Ihre Antwort auf Marshall Fryman lesen, so kann ein paar Optionen für Sie:

THotSpotImage - Wenn Sie bereits TMS Komponenten haben .. .

ImageEn - falls Sie bereits haben .. .

Siehe W2M Antwort # 3 i in weiter denken muss ich alle inneren Pixel meiner Auswahl bekommen, so wie kann ich meine Auswahl / Objekte?

speichern
  

Speichern Auswahl speichert nur die Auswahl selbst. Es speichert nicht das Bild   innerhalb der Auswahl:

     

Prozedur SaveSelectionToFile (const Filename: string);   SaveSelectionToFile speichert die aktuelle Auswahl in die angegebene Datei.   Beispiel   ImageEnView1.Select (10,10,100,100);   ImageEnView1.SaveSelectionToFile ( 'Selektion1');   ..   sel1.Position: = 0;   ImageEnView1.LoadSelectionFromFile ( 'Selektion1'); // das ist wie   Wählen Sie (10,10,100,100)

Ich bin ein wenig verwirrt, Ihre Frage. Versuchen Sie, mit Facebook oder einfach kopieren die Funktionalität zu interagieren?

Wenn Sie versuchen, die Funktionalität zu kopieren: Sie sollten in der Lage sein, nur um das Bild anzuzeigen, damit der Benutzer das Rechteck auswählen, möglicherweise das Bild auf eine neue Kopie zu kopieren, die andere Person mit, zu informieren und einen Tag in einem DB gelten. Einige nützliche Links: hier ist eine ausgewählte Bild Beispiel und hier ist die Kopie Bildabschnitt Beispiel. Ich würde eigentlich denken, dass Sie das ausgewählte Bild in einem Malkasten tun könnten, aber noch nicht wirklich mit einem von denen in immer gespielt.

Wenn Sie versuchen, die API zuzugreifen: Die .NET-Schnittstelle für Sie arbeiten kann. Von dem, was ich sagen kann, gibt es keine COM-Schnittstelle, so dass Sie müßten Ihren eigenen Anschluss schreiben oder eine .NET Delphi App verwenden. Hinweis: alle diese Informationen kommt von Google, damit ich nicht schwören auf und ab, dass es wirklich der aktuelle Stand der Dinge. Die einzige andere Facebook-API-Anfrage ich sah, war von 2007

Wenn Sie die automatische Gesichtserkennung machen wollen, OpenCV aus der referenzierten Frage sieht aus wie eine anständige Art und Weise, es zu tun (vor allem, wenn Sie den Zugriff auf C ++ Builder).

In der Graphic32-Bibliothek , können Sie auf einander in einem Bild mehrere Schichten aufweisen. Eine der Schichten, die aus dem Kasten vorgesehen ist, ist ein TRubberbandLayer , die es dem Benutzer erlaubt, die Schicht zur Laufzeit neu zu positionieren / Größe ändern.

Das mousemove- Ereignis für die TImage32-Komponente, hat einen Parameter, der die Schicht gerade unter dem Cursor gibt.

type TImgMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer) of object;

Eine Kombination aus rubberbandlayers und die mousemove--Ereignis sollte eine gute Lösung sein, denke ich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top