Хобрук: Ваш путь к мастерству в программировании

Как получить Uint8List из сетевого образа по URL-адресу во Flutter?

У меня есть сетевой URL-адрес изображения, и мне нужно получить Uint8List. Как мне его преобразовать? Я проверяю ответы на аналогичный вопрос, но эти способы не работают. Как получить список Flutter Uint8List из сетевого образа? < / а>

24.01.2020

  • что значит не работает? 24.01.2020
  • Это означает, что код не актуален для последней версии Flutter. var load = sunImage.load(val); Для загрузки метода требуются два обязательных параметра: NetworkImageKey и DecoderCallback. 24.01.2020
  • final DecoderCallback callback = (Uint8List bytes, {int cacheWidth, int cacheHeight}) { print(bytes.length); return instantiateImageCodec(bytes, targetWidth: cacheWidth, targetHeight: cacheHeight); }; ImageProvider provider = AssetImage('images/bg.png'); provider.obtainKey(createLocalImageConfiguration(context)).then((key) { provider.load(key, callback); }); я тестировал AssetImage, но он должен работать с любыми ImageProvider 24.01.2020
  • ничего, provider.load(key, callback) называется 25.01.2020
  • А когда надо называть print(bytes.length)? 25.01.2020
  • когда вы получаете закодированные данные, пытались запустить опубликованный мной код (изменяя только 'images / bg.png' ')? 25.01.2020
  • Да, я пробовал, и вместо изображения актива я сделал это ImageProvider provider = CachedNetworkImageProvider("myUrl");. После вызова метода provider.load(key, callback); ничего не происходит. 25.01.2020
  • Я понятия не имею, как вы это называете и что вы имеете в виду под "myUrl", но я использовал: ImageProvider provider = NetworkImage('https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_92x30dp.png'), и он отлично работает, он печатает got data: 3831 bytes 25.01.2020
  • Я использовал NetworkImage вместо CachedNetworkImage и получил байты. Я постараюсь получить изображение после него 25.01.2020
  • затем вызовите provider.load(key, callback).addListener(listener) - я имею в виду добавить .addListener(listener) к существующему коду 25.01.2020
  • Большое спасибо. Оно работает. Вы можете скопировать свой код и добавить в ответ 27.01.2020
  • не стесняйтесь писать самостоятельный ответ ;-) 27.01.2020
  • Разве не проще использовать http get, как этот ответ? stackoverflow.com/a/58310260/2942294 26.05.2020
  • @syonip В этом примере код выглядит проще, но некоторые люди не могут запустить этот код и имеют другие ошибки. 26.05.2020

Ответы:


1

Попробуй это:

Uint8List bytes = (await NetworkAssetBundle(Uri.parse(url)).load(url))
    .buffer
    .asUint8List();
07.07.2020
  • Привет, я пытаюсь использовать ваш код в блоке вместо загрузки изображения с помощью http get, поскольку в Интернете политика CORS не позволяет этого. а когда в сети я получаю BlocError: Unsupported operation: Platform._version. Есть идеи, почему? Большое спасибо. 14.07.2020
  • Привет, @Vincenzo, я тестировал на мобильном телефоне, а не в Интернете, но если речь идет о политике cors, вам следует подумать об использовании того же домена, заголовка allow-origin или jsonp. 15.07.2020
  • привет @kaya, я действительно решил это вчера, мне действительно нужно было определить основной заголовок для моего ведра хранилища Google. теперь я могу скачать их в том виде, в каком был. Большое спасибо за ответ. 15.07.2020

  • 2

    это помогло мне:

    import 'dart:typed_data';
    import 'package:flutter/services.dart';
    
    //Get the image from the URL and then convert it to Uint8List
    Uint8List bytes = (await NetworkAssetBundle(Uri.parse('https://some_image_url.png'))
                .load('https://some_image_url.png'))
                .buffer
                .asUint8List();
    
    29.03.2021

    3

    У меня это работает (с использованием Flutter Web) с библиотекой file_saver.

    Uri uri = Uri.parse(url);
    
    Uint8List bytes = await readBytes(uri);
    await FileSaver.instance.saveFile(filename, bytes, 'jpg',
        mimeType: MimeType.JPEG); // specify your vars
    
    14.05.2021

    4
  • но у вас нет addListener() - разве вы не намеревались получить декодированный ui.Image объект? 27.01.2020
  • Я хотел получить байты изображения 27.01.2020
  • но вы также сказали: Я попытаюсь получить изображение после этого - так что это уже неправда? 27.01.2020
  • Я имею в виду байты, потому что я использую байты для сохранения своего изображения. 27.01.2020
  • хорошо, теперь я понял - но на самом деле было бы лучше, если бы вы использовали http пакет напрямую ? 27.01.2020
  • Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...