2009-12-16 17 views
6

Próbuję dodać zaokrąglone rogi do moich obrazów przy użyciu ImageMagick.Zaokrąglone rogi przy użyciu ImageMagick (bakground przezroczysty lub biały)

Jeśli obraz wejściowy jest plikiem PNG lub GIF, mój skrypt działa poprawnie.

Ale jeśli mój plik wejściowy jest plikiem JPEG, rogi są czarne. Chciałbym użyć niestandardowego koloru rogu w tym przypadku (np. Biały) jakiegoś pomysłu?

Oto mój skrypt bash pracy:

convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK 
convert $SRC -matte $MASK -compose DstIn -composite $DST 

Parametry są następujące:

$ SRC: wejście obrazu $ W: szerokość obrazu wejściowego $ H: wysokość obrazu wejściowego $ maski: obraz maski zawierający przezroczyste rogi $ DST: wynikowy obraz z zaokrąglonymi narożnikami.

Z góry dziękuję.

Odpowiedz

9

Wreszcie znalazł rozwiązanie:

convert -size "$W"x"$H" xc:none -draw "roundrectangle 0,0,$W,$H,$R,$R" $MASK 
convert $SRC -matte $MASK -compose DstIn -composite $TMP_PNG 

używam "Temp" PNG jako miejsca przeznaczenia. Jeśli formatem wyjściowym nie jest GIF lub PNG, używam funkcji "spłaszczania" programu ImageMagick z białym kolorem jako tłem.

convert $TMP_PNG -background white -flatten $DST 

Dla wyjścia PNG: wystarczy skopiować do $ $ TMP_PNG DST

Na wyjściu GIF: wystarczy przekonwertować do $ $ TMP_PNG DST

Else: spłaszczyć obraz jak powiedziałem wcześniej.

Nadzieję, że pomaga.

+0

Uwaga dla każdego czytającego tę odpowiedź: jeśli tymczasowy plik maski '$ TMP_PNG' nie ma rozszerzenia pliku, które identyfikuje jego format (np.' .png'), to należy zamiast tego wstawić zmienną. W ten sposób: 'png: $ TMP_PNG'. Również 'canvas: none' to nowy sposób pisania' xc: none' mimo tego, że ten drugi nadal działa. – starfry

Powiązane problemy