2013-02-26 15 views
6

Il mio problema I miei clienti caricano le immagini da indossare su una maglietta. Ho bisogno di sapere quanti colori principali sono nel design. Ho provato gli script PHP e Imagemagick, non riesco a ottenere i risultati che sto cercando.PHP o Imagemagick: Numero di colori principali da un'immagine

Questa immagine ha 5 principali variazioni di colore. Quando uso i colori unici di imagemagick, ottengo una vasta gamma di colori diversi. C'è una linea di codice o script che posso usare per ottenere un risultato di 5.
python logo

Qui è il codice che sto usando per cercare di ottenere il conteggio colore unico con ImageMagick ma ho modo di molti colori.

exec(convert $origimage -unique-colors -scale 1000% $newimage); 
+0

Ma quando stampo una maglietta, stamperei solo 1 blu e 1 giallo. Per l'occhio umano che iamge sembra 2 colori, ma una sceneggiatura prenderà più di due colori, voglio la versione dell'occhio umano. Script per essere abbastanza intelligente da dire, c'è 1 variazione blu e 1 variazione gialla. Hai letto la mia domanda? – bbullis

+0

Credo che, quello che state cercando è un modo per determinare i "colori principali" non importa quante veri colori sono nella foto. Suggerirei di usare un software come Paintshop o pixlr.com e poi semplicemente salvare l'immagine come GIF con una tavolozza ridotta di 3 colori (bianco/blu/giallo). – powtac

+0

ahah, mi stai prendendo in giro? Hai letto la mia domanda o stai scrivendo commenti per aumentare la tua reputazione? Questo è quello che ho detto che ho bisogno dei colori principali nella mia domanda e il titolo della mia domanda. Ho bisogno di tutto questo attraverso uno script, non Photoshop. – bbullis

risposta

2

La lettura di questa discussione dovrebbe aiutare: http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=12818

In sostanza, si dovrebbe usare ImageMagick per generare un istogramma del colore utilizzato, e ordinare il risultato per occorrenze (o percentuale, se si preferisce) Poi puoi decidere di prendere le 2 linee superiori e dovrebbe darti una risposta non tanto cattiva.

Un algoritmo più robusto potrebbe essere quella di scegliere una soglia di valori percentuali, e mantenere i colori al di sopra di questa soglia ...

Spero che questo ti dà qualche indizio.

+0

Grazie questa informazione. Ho finito per truccare una soluzione sulla base di alcune informazioni da quel forum. In pratica, ottengo ogni colore di pixel con l'istogramma, analizzando l'output dell'istogramma e contando solo i colori visualizzati in più del 5% della foto. Per i miei scopi, funziona! La serigrafia per le magliette non consente gradienti quindi sono impostato e pronto per il rollover! Grazie. – bbullis

+0

Felice di vedere che funziona. Nel tuo caso il 5% è una buona soglia, ma tieni presente che puoi farlo variare a seconda dell'immagine in ingresso. Ad ogni modo, non dimenticare di convalidare la risposta se è un bene per te. –

+0

Questa non è una soluzione abbastanza buona, ho fallito con un paio di altre immagini che ho provato – bbullis

0

Non è possibile determinare il numero di colori (3 in questo esempio) prima, a meno che non si sia a conoscenza della complessità soggettiva dell'immagine.

ci sono tre impostazioni che rendono l'immagine con un certo numero di colori.

convert python-logo.png +dither -colors 3     python-logo-reduced-colors.gif 
convert python-logo.png +dither -posterize 3    python-logo-reduced-colors.gif 
convert python-logo.png -separate -threshold 50% -combine  python-logo-reduced-colors.gif 
+0

Questo non mi aiuta a recuperare il numero di colori! Non so cosa stia caricando il mio cliente, quindi non posso usare -colors 3. Powtac, non rispondere o commentare a meno che tu non comprenda la mia domanda, la terza volta che hai postato senza leggere la mia domanda, darla su. – bbullis

Problemi correlati