/ / Czyszczenie lewej strony obrazu - imagemagick

Czyszczenie lewej strony obrazu - imagemagick

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 № 1

Oto mój obraz początkowy, wykonany w następujący sposób:

convert -size 256x256 gradient:cyan-yellow image.png

wprowadź opis obrazu tutaj

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

wprowadź opis obrazu tutaj

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