/ / Jak uzyskać kod koloru heksadecymalnego z obrazka jednolitego koloru dla skryptu? - linux, kolory, hex, imagemagick, imagemagick-convert

Jak uzyskać kod koloru heksadecymalnego z obrazka jednolitego koloru dla skryptu? - linux, kolory, hex, imagemagick, imagemagick-convert

Pisałem scenariusz, aby zmienić moje tłomaszynę linuksową do losowego obrazu z zestawu obrazów zawierających tylko jednolite kolory. Chciałbym rozszerzyć ten skrypt, aby odpowiednio dostosować niektóre aplikacje (głównie terminalne), przynajmniej by zmienić kolor tekstu, ewentualnie zmienić kolor z ciemnego na jasny itd. Zastanawiałem się, jakie opcje muszę zastosować pobierz kod szesnastkowy dla koloru na obrazie. Czy jest coś w bash, z czym mogę to zrobić? Czy muszę napisać program w bardziej niezawodnym języku i mieć kod szesnastkowy jako wyjście? Czy istnieje lepszy sposób na zrobienie tego w całości? Moje poszukiwania do tej pory były nieco niejednoznaczne.

Odpowiedzi:

1 dla odpowiedzi № 1

Gorąco polecam użyć ImageMagick do tego zadania. The dokumentacja wspomina, jak wyodrębnić dane z obrazu.

Z "Wyodrębnianie średniego koloru":

Średni kolor obrazu można znaleźć bardzoszybko, używając "-scale", aby zmniejszyć obraz do pojedynczego piksela. Oto przykładowy średni kolor wbudowanego obrazu "róża:". Wyprowadzam kolor za pomocą FX Escape Format który zwraca ciąg znaków koloru, który może być użyty bezpośrednio bez komunikatora.

user@laptop:~$ convert rose: -scale 1x1! -format "%[pixel:s]n" info:-

Wyjdzie: srgb(146,89,80)

W twoim przypadku wymień rose: z plikiem obrazu, takim jak foo.png.

Jeśli chcesz uzyskać wyjście bezpośrednio w notacji szesnastkowej, użyj tego:

convert rose: -scale 1x1! -format "%[pixel:s]n" info:- | awk -F "[(,)]" "{printf("#%x%x%xn",$2,$3,$4)}"