▲ Triangle — это инструмент для генерации треугольной сетки изображения с использованием метода Делоне. Он принимает исходное изображение и преобразует его в абстрактное изображение, составленное из плиток треугольников.
### Процесс
-in
.Draw
может быть вызван даже на потоках данных. Проверьте это демо для справки.Перейдите по этой ссылке, чтобы лучше понять поддерживаемые функции.
$ go install github.com/esimov/triangle/v2/cmd/triangle@v2.0.0
Вы также можете скачать двоичный файл из папки релизов.
Библиотека также может быть установлена с помощью Homebrew.```bash $ brew install triangle
## Использование API
```go
proc := &triangle.Processor{
MaxPoints: 2500,
BlurRadius: 2,
PointRate: 0.75,
BlurFactor: 1,
EdgeFactor: 6,
}
img := &triangle.Image{
Processor: *proc,
}
input, err := os.Open("input.jpg")
if err != nil {
log.Fatalf("ошибка при открытии исходного файла: %v", err)
}
// декодирование изображения
src, err := img.DecodeImage(input)
if err != nil {
log.Fatalf("ошибка при декодировании изображения: %v", err)
}
res, _, _, err := img.Draw(src, *proc, func() {})
if err != nil {
log.Fatalf("ошибка при генерации треугольников: %v", err)
}
output, err := os.Create("output.png")
if err != nil {
log.Fatalf("ошибка при открытии целевого файла: %v", err)
}
// кодирование изображения
png.Encode(output, res)
$ triangle --help
Следующие флаги поддерживаются:
Флаг | Значение по умолчанию | Описание |
---|---|---|
in |
n/a | Исходное изображение |
out |
n/a | Целевое изображение |
bl |
2 | Радиус размытия |
nf |
0 | Фактор шума |
bf |
1 | Фактор размытия |
ef |
6 | Фактор краев |
pr |
0.075 | Скорость точек |
pth |
10 | Порог точек |
pts |
2500 | Максимальное количество точек |
so |
10 | Порог фильтра Sobel |
sl |
false | Использование сплошного цвета линии (да/нет) |
wf |
0 | Режим wireframe (0: без линии, 1: с линией, 2: только линия) |
st |
1 | Ширина линии |
gr |
false | Вывод в монохромном режиме |
web |
false | Открытие SVG файла в веб-браузере |
bg |
' ' | Цвет фона (указан как шестнадцатеричное значение) |
cw |
системные спецификации | Количество файлов для обработки параллельно |
CLI-инструмент также позволяет обрабатывать несколько изображений из папки параллельно. Вам нужно только указать исходную и целевую папки с помощью флагов -in
и -out
.
$ triangle -in <input_folder> -out <output_folder>
Вы можете также предоставить URL-адрес изображения для флага -in
.
$ triangle -in <image_url> -out <output_folder>
Командная строка принимает также имена каналов, что означает, что вы можете использовать stdin
и stdout
без необходимости указания значения для флагов -in
и -out
напрямую, так как по умолчанию они равны -
. По этой причине можно использовать curl
, например, для загрузки изображения из интернета и запуска процесса триангуляции над ним непосредственно, без необходимости загрузки изображения сначала и последующего вызова ▲ Triangle.
Вот несколько примеров использования имен каналов:
$ curl -s <image_url> | triangle > out.jpg
$ cat input/source.jpg | triangle > out.jpg
$ triangle -in input/source.jpg > out.jpg
$ cat input/source.jpg | triangle -out out.jpg
$ triangle -out out.jpg < input/source.jpg
Вы можете указать цвет фона в случае прозрачного фона изображения (.png
) с помощью флага -bg
. Этот флаг принимает шестнадцатеричную строку. Например, установка флага на -bg=#ffffff00
сделает канал альфа результата прозрачным.#### Вывод в виде изображения или SVG
По умолчанию вывод сохраняется в виде изображения, но вы можете экспортировать полученные вершины даже в файл SVG. Командная строка может распознавать тип вывода напрямую из расширения файла. Это удобное дополнение для тех, кто хочет генерировать большие изображения без потери качества.
$ triangle -in samples/input.jpg -out output.svg
Использование с флагом -web
позволяет получить доступ к сгенерированному файлу SVG напрямую в веб-браузере.
$ triangle -in samples/input.jpg -out output.svg -web=true
Поддерживаются следующие типы выходных файлов: .jpg
, .jpeg
, .png
, .bmp
, .svg
.
Установка более низкого порога точек, результативное изображение будет больше напоминать кубическую живопись. Вы можете добавить фактор шума, генерируя более художественное, зернистое изображение.
Вот несколько примеров, с которыми вы можете экспериментировать:
$ triangle -in samples/input.jpg -out output.png -wf=0 -pts=3500 -st=2 -bl=2
$ triangle -in samples/input.jpg -out output.png -wf=2 -pts=5500 -st=1 -bl=10
```## Примеры
<a href="https://github.com/esimov/triangle/blob/master/output/sample_3.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_3.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_4.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_4.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_5.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_5.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_6.png"><img src="https://github/esimov/triangle/blob/master/output/sample_6.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_8.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_8.png" width=410/></a>
<a href="https://github.com/esimov/triangle/blob/master/output/sample_9.png"><img src="https://github.com/esimov/triangle/blob/master/output/sample_9.png" width=410/></a>



## Лицензия
Copyright © 2018 Endre SimoЭтот проект находится под лицензией MIT. Полный текст лицензии доступен в файле [LICENSE](https://github.com/esimov/triangle/blob/master/LICENSE).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )