учитывая изображение, которое имеет некоторое фактическое содержание внутри и, как правило, некоторые нежелательные белый или черный или прозрачность вокруг этого, я хотел бы обрезать или обрезать внешние части с помощью ImageMagick.
следующее изображение было нарисовано в цифровом виде на компьютере (на HTML <canvas>
):
следующая команда ImageMagick, что я пытался:
$ convert canvas.png -trim +repage canvas_trimmed.png
и это сработало прекрасно:
Так это именно то, что я хочу. Но теперь я хочу, чтобы это работало и со сканированными документами, которые не так "идеальны", как компьютерные изображения, т. е. у них больше оттенков "белого" и "черного" и нет прозрачности, которую было бы легче обнаружить. Иногда они даже имеют некоторые черные полосы по белому фону бумаги, потому что зона сканера больше, чем бумага:
С этим изображением я попробовал следующие команды в заданном порядке, каждая из которых пытается быть более агрессивной, но ни одна не дает никаких результатов - вы не видите разницы между исходным изображением и "обрезанными" изображениями, т. е. обрезка или обрезка не работает вообще:
$ convert scan.jpg -trim +repage scan_trimmed.jpg
$ convert scan.jpg -fuzz 10% -trim +repage scan_trimmed.jpg
$ convert scan.jpg -fuzz 60% -trim +repage scan_trimmed.jpg
$ convert scan.jpg -fuzz 60% -bordercolor white -border 1x1 -trim +repage scan_trimmed.jpg
$ convert scan.jpg -fuzz 60% -bordercolor black -border 1x1 -trim +repage scan_trimmed.jpg
что я здесь делаю неправильно? Как можно изменить команду ImageMagick, которая надежно обрезает созданные компьютером изображения обрезает отсканированные документы стиля выше так же надежно?