2013-02-26 12 views
6

Mój problem Moi klienci ładują obrazy, aby założyć koszulkę. Muszę wiedzieć, ile głównych kolorów jest w projekcie. Próbowałem skryptów PHP i Imagemagick, nie mogę uzyskać wyników, których szukam.PHP lub Imagemagick: Liczba kolorów głównych z obrazu

Ten obraz ma 5 głównych wariantów kolorystycznych. Kiedy używam unikalnych kolorów imagemagick, dostaję ogromną gamę różnych kolorów. Czy istnieje linia kodu lub skryptu, który można wykorzystać, aby uzyskać wynik 5.
python logo

Oto kod używam, aby spróbować i dostać się liczyć z ImageMagick wyjątkowy kolor, ale pojawia drogę do wielu kolorach.

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

Ale drukując koszulę, po prostu drukowałbym tylko 1 niebieski i 1 żółty. Dla ludzkiego oka, że ​​iamge wygląda jak 2 kolory, ale scenariusz odbierze więcej niż dwa kolory, chcę wersję z ludzkim okiem. Skrypt jest na tyle sprytny, że mówi o jednej wariacji niebieskiej i jednej żółtej. Czy przeczytałeś moje pytanie? – bbullis

+0

Myślę, że to, czego szukasz, jest sposobem na określenie "głównych kolorów" bez względu na to, ile prawdziwych kolorów jest na zdjęciu. Polecam użyć oprogramowania takiego jak Paintshop lub pixlr.com, a następnie po prostu zapisz obraz jako GIF ze zredukowaną paletą 3 kolorów (biały/niebieski/żółty). – powtac

+0

haha, żartujesz ze mnie? Czy przeczytałeś moje pytanie, czy tylko piszesz komentarze, aby zwiększyć swoją reputację? To właśnie powiedziałem, że potrzebuję głównych kolorów dokładnie w moim pytaniu i tytule mojego pytania. Potrzebuję tego wszystkiego za pomocą skryptu, a nie photoshopa. – bbullis

Odpowiedz

2

Czytając tę ​​dyskusję powinny pomóc: http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=12818

Zasadniczo należy użyć ImageMagick do generowania histogramu koloru używanego i sortować wynik przez wystąpień (lub procent, jeśli wolisz) Następnie możesz zdecydować się na pierwsze 2 linie i powinna dać ci niezbyt złą odpowiedź.

Bardziej wytrzymałe algorytm może być do wyboru progu wartości procentowych i zachować kolory są powyżej tego progu ...

mam nadzieję, to daje pewne wskazówki.

+0

Dzięki tym informacjom. Skończyłem na fałszowaniu rozwiązania opartego na niektórych informacjach z tego forum. Zasadniczo otrzymuję każdy kolor piksela za pomocą histogramu, analizując wynik histogramu i licząc tylko kolory, które pojawiają się w ponad 5% zdjęcia. Dla moich celów działa! Sitodruk na koszulkach nie pozwala na nachylenie, więc jestem gotowy i gotowy do użycia! Dzięki. – bbullis

+0

Cieszę się, że to działa. W twoim przypadku 5% to dobry próg, ale pamiętaj, że możesz go zmieniać w zależności od obrazu wejściowego. W każdym razie, nie zapomnij potwierdzić odpowiedzi, jeśli jest ona dla ciebie dobra. –

+0

To nie jest wystarczająco dobre rozwiązanie, nie udało mi się z kilkoma innymi obrazami, które próbowałem. – bbullis

0

Nie można określić liczby kolorów (3 w tym przykładzie) przed, chyba że jesteś świadomy subiektywnej złożoności obrazu.

Dostępne są trzy ustawienia, które renderują obraz o zadanej liczbie kolorów.

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

To nie pomoże mi odzyskać liczby kolorów! Nie wiem, co mój klient będzie przesyłać, więc nie mogę używać -colors 3. Powtac, nie odpowiadaj ani nie komentuj, chyba że rozumiesz moje pytanie, po raz pierwszy opublikowałeś bez czytania mojego pytania, daj je w górę. – bbullis

Powiązane problemy