Генерируйте Карту HTML из изображения

Flutter в настоящее время не предоставляет такую ​​функцию.
Там могут быть сторонние пакеты, которые делают это. Единственное, что я знаю, это den ( https://pub.dartlang.org/packages/den ), но этот не поддерживается уже довольно давно и не может быть использован с последним Dart или Флаттер версии.

Что может помочь, так это получить хотя бы список зависимостей, в которых доступны более новые версии.

Upvote https://github.com/flutter/flutter/issues/12627 для этого.

В то же время можно использовать обходной путь, упомянутый в https://github.com/flutter/flutter/issues/12627#issuecomment-400037072 .

Установите FLUTTER_ROOT на ваш Переверните каталог установки и запустите pub upgrade. (для этого требуется установить Dart SDK в дополнение к Flutter SDK)

$ export FLUTTER_ROOT="/Users/my_user/flutter"

$ pub upgrade
Resolving dependencies... (16.2s)
! analyzer 0.33.0 (overridden) (0.34.2 available)
  args 1.5.1
  async 2.0.8
  boolean_selector 1.0.4
! build 1.1.0 (overridden)
  built_collection 4.1.0
! built_redux 7.5.2 (overridden)
  built_value 6.2.0
  bwu_grinder_tasks 0.2.0-dev.0
  charcode 1.1.2
  cli_util 0.1.3+2
  collection 1.14.11
  contacts_service 0.0.9 (0.1.0 available)
> convert 2.1.1 (was 2.0.2)
  crypto 2.0.6
  csslib 0.14.6
  dart_style 1.2.2
  device_info 0.2.1 (0.3.0 available)
> file 5.0.7 (was 5.0.6)
> firebase_analytics 1.1.0 (was 1.0.6)
...

12
задан Gerhard Dinhof 24 November 2008 в 03:56
поделиться

3 ответа

Откройте карту в Inkscape. Если это - битовый массив, используйте Путь-> Битовый массив Трассировки для трассировки краев. Очистите векторные данные для включения только путей, что Вы хотите появиться в своей карте изображения. Сохраните документ, я предлагаю файлу POVRay. Теперь у Вас есть список вершин (и много разметки или метаданных, о которых Вы не заботитесь о) в формате обычного текста. Преобразование от этого до необходимого синтаксиса HTML является все еще проблемой, но совсем не столь же сложный как первый шаг.

Если это имеет значение существует давнишний запрос новых функций для Inkscape для включения опции экспортировать карты изображения HTML.

8
ответ дан 26 October 2019 в 10:47
поделиться

Спасибо за помощь!

Хотя Jonathans подсказывают для использования фильтра Sobel, определенно работал бы, я выбрал подход Sparrs первого преобразования битового массива в векторное изображение (через Inkscape) и затем обработка файла SVG. После изучения некоторых основ спецификации SVG было довольно легко извлечь - для необходимых карт изображения HTML - координаты X/Y от всех других спам и сгенерировать подходящий код.

Хотя это не аэрокосмические исследования, кто-то мог бы найти эту часть кода полезной:

// input format: M 166,362.27539 C 163.525,360.86029 161.3875,359.43192 161.25,359.10124 C ...
private static void Svg2map(string svg_input)
{
    StringBuilder stringToFile = new StringBuilder();

    // get rid of some spaces and characters
    var workingString = svg_input.Replace("z", "").Replace(" M ", "M").Replace(" C ", "C");
    // split into seperate polygons
    var polygons = workingString.Split('M');
    foreach (var polygon in polygons)
    {
        if (!polygon.Equals(String.Empty))
        {
            // each polygon is a clickable area
            stringToFile.Append("<area shape=\"poly\" coords=\"");
            // split into point information
            var positionInformation = polygon.Split('C');
            foreach (var position in positionInformation)
            {
                var noise = position.Trim().Split(' ');
                // only the first x/y-coordinates after C are relevant
                var point = noise[0].Split(',');
                foreach (var value in point)
                {
                    var valueParts = value.Split('.');
                    // remove part after comma - we don't need this accurancy in HTML
                    stringToFile.Append(valueParts[0]);
                    // comma for seperation - don't worry, we'll clean the last ones within an area out later
                    stringToFile.Append(",");
                }
            }
            stringToFile.AppendLine("\" href=\"targetpage.html\" alt=\"Description\" />");
        }
    }
    // clean obsolete commas - not pretty nor efficient
    stringToFile = stringToFile.Replace(",\"", "\"");

    var fs = new StreamWriter(new FileStream("output.txt", FileMode.Create));
    fs.Write(stringToFile.ToString());
    fs.Close();
}
10
ответ дан 26 October 2019 в 10:47
поделиться

Я могу дать Вам один шаг процесса: Вы испытываете необходимость для использования фильтра Sobel (часто названный граничным обнаружением в программах как Photoshop).

После этого необходимо будет найти библиотеку трассировки на предпочтительном языке.

1
ответ дан 26 October 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: