Delphi: come etichettare le foto via facebook fa
Domanda
Ho bisogno di un modo per etichettare le foto in un'applicazione desktop Delphi il modo in cui Facebook lo fa.
Che include un modo di aggiungere facilmente i tag sul popolo, e poi passare il mouse sopra la persona nella foto per mostrare il tag.
I due suggerimenti nella risposta a: " Delphi Componenti per l'identificazione facciale e Tagging " non risolvono questo.
Ma non ho idea da dove cominciare, e sono stato in grado di trovare idee sul web su come fare questo. Come Facebook lo fa? O forse c'è una componente per Delphi che gli permetterà.
Quale sarebbe il modo migliore per cercare di attuare il tagging Facebook-come?
P.S. Si tratta di alcune delle definizione API di Facebook per questo: http: //wiki.developers. facebook.com/index.php/Photos.addTag
Ecco un programma Java che implementa la codifica funzionalità volto che voglio fare nella mia Delphi app: fb-photo-uploader
Soluzione
I parametri chiave delle API hai citato sono l'identificazione dell'immagine, le coordinate, e il tag. Il tag può essere sia l'ID utente di un utente di Facebook, oppure può essere a forma libera di testo (per il caso in cui il soggetto con tag non è un utente di Facebook). Facebook utilizza solo una coordinata perché utilizza regioni di dimensione fissa per indicare un'area etichettato; l'idea è che si fa clic sul centro del volto di una persona, e Facebook solo negozi che punto.
Se si visualizza un'immagine in un controllo TImage
(che è la prima scelta ovvia, dopo tutto), è possibile rilevare clic del mouse con gli eventi OnMouseDown
e OnMouseUp
. (L'evento OnClick
è più semplice, ma non vi dico le coordinate.) Una volta che hai acquisito un punto, richiede per un'etichetta per accompagnare quel punto. È possibile utilizzare le etichette prestabilite, come ID utente di Facebook, o semplicemente utilizzare il testo normale, o utilizzare qualcosa di tuo ideazione. La questione di ciò che si utilizza per rappresentare un valore di tag è ortogonale a qualsiasi altra domanda tu hai chiesto finora.
L'altra metà di Facebook foto di tagging è che spostando il mouse sull'immagine visualizza il testo tag sull'immagine, e muovendo il mouse sopra le etichette sotto evidenziano le regioni associate. Gestire gli eventi OnMouseMove
e scrivere del codice per visualizzare o nascondere le etichette e le forme a seconda dei casi. Se si utilizza TLabel
e TShape
, si potrebbe anche non essere necessario modificare l'immagine, ma che mostra i comandi sulla parte superiore dell'immagine potrebbe interferire con ulteriori eventi OnMouseMove
per l'immagine. Non dovrebbe prendere troppo tempo per provare alcuni esperimenti e vedere che cosa funziona per voi.
Altri suggerimenti
lkessler, ho appena letto la tua risposta a Marshall Fryman, quindi può avere un paio di opzioni per voi:
THotSpotImage - Se si dispone già di componenti TMS .. .
ImageEn - nel caso in cui le avete già .. .
risposta di W2M # 3 penso che in seguito ho bisogno di ottenere tutti i pixel interni delle mie scelte, in modo Come posso salvare le mie selezioni / oggetti?
Salva selezione solo salva la selezione stessa. Esso non salva l'immagine all'interno della selezione:
procedura SaveSelectionToFile (FileName const: archi); SaveSelectionToFile salva la selezione corrente nel file specificato. Esempio ImageEnView1.Select (10,10,100,100); ImageEnView1.SaveSelectionToFile ( 'selezione1'); .. sel1.Position: = 0; ImageEnView1.LoadSelectionFromFile ( 'selezione1'); // questo è come Selezionare (10,10,100,100)
Sono un po 'confusa per quanto riguarda la tua domanda. Stai cercando di interagire con Facebook o semplicemente copiare la funzionalità?
Se si sta tentando di copiare la funzionalità: Si dovrebbe essere in grado di visualizzare solo l'immagine, permette di selezionare il rettangolo, possibilmente copiare l'immagine di una nuova copia di notificare l'altra persona con, e applicare un tag in un DB. Alcuni link utili: qui è un esempio di selezione delle immagini e qui è l'esempio di copia porzione di immagine. Mi piacerebbe davvero che si possa fare l'immagine di selezione in un paintbox, ma non si è effettivamente giocato con uno di quelli per sempre.
Se si sta tentando di accedere alle API: l'interfaccia .NET può funzionare per voi. Da quello che posso dire, non v'è alcuna interfaccia COM in modo che avrebbe dovuto scrivere il proprio connettore o utilizzare un'applicazione .NET Delphi. Nota: tutte queste informazioni proviene da Google quindi non giuro su e giù che è davvero lo stato attuale delle cose. L'unica altra richiesta di Facebook API che ho visto era a partire dal 2007.
Se si vuole fare il riconoscimento facciale automatico, OpenCV dalla questione fa riferimento si presenta come un modo decente per farlo (soprattutto se si ha accesso a C ++ Builder).
Graphic32-biblioteca , è possibile avere diversi strati su a vicenda in un'immagine. Uno degli strati che è fornito dalla scatola, è un TRubberbandLayer che permette all'utente di riposizionare / ridimensionare il livello in fase di esecuzione.
MouseSpostato per il TImage32-componente, ha un parametro che dà il livello correntemente sotto il cursore.
type TImgMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer; Layer: TCustomLayer) of object;
Una combinazione di rubberbandlayers e MouseMove evento dovrebbe essere buona soluzione, credo.