Używając imagemagick, chcę wyczyścić lewą stronęobrazu, to jest zrobić biały bez przycinania. Na przykład czyszczenie najbardziej pionowego paska po lewej stronie o szerokości 25 pikseli. Wymyśliłem, jak przycinać do danej geometrii, ale nie mogłem wymyślić sposobu czyszczenia bez przycinania.
Odpowiedzi:
2 dla odpowiedzi № 1Oto mój obraz początkowy, wykonany w następujący sposób:
convert -size 256x256 gradient:cyan-yellow image.png
Metoda 1
Jednym ze sposobów na to byłoby użycie -fx
i ustaw wszystkie piksele, w których współrzędna x jest mniejsza niż 25 do 1,0 (tj. biała) i pozostaw wszystkie pozostałe piksele takimi, jakimi są:
convert image.png -fx "i<25?1:u" result.png
Metoda 2
Innym, szybszym sposobem na zrobienie tego może być sklonowanie oryginalnego obrazu i przeskalowanie go do szerokości 25 pikseli, wypełnienie go białą i złożoną kompozycją nad oryginalnym obrazem:
convert image.png
( +clone -scale 25x! -fill white -colorize 100 )
-composite result.png
Wynik jest taki sam.
Metoda 3
Trzecim sposobem, aby to zrobić, może być przycięcie obrazu o 25 pikseli z lewej strony, a następnie z powrotem 25 pikseli z lewej strony:
convert image.png -crop +25+0 -background white -gravity west -splice 25x result.png
Metoda 4
Trochę kludu, ale bliżej tego, o co prosiłeś. Tutaj, myślę, że twoja wysokość obrazu nie przekracza 10 000 pikseli i narysuje prostokąt:
convert image.png -fill white -draw "rectangle 0,0 24,9999" result.png
Domyślam się właściwy sposobem na zrobienie tego jest najpierw zdobycie wysokości, a następnie użycie jej:
#!/bin/bash
h=$(convert image.png -format "%[fx:h-1]" info:)
convert image.png -fill white -draw "rectangle 0,0 24,$h" result.png