«Запрошенный битрейт слишком мал» - отображение JPEG2000 на Android - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь отобразить изображение jpeg2000 (jp2) на Android. Я использую библиотеку Xamarin и Csj2k (c# порт библиотеки jj2000 ).

CSJ2K.J2kImage.FromBytes(ImageBytes).As<Bitmap>()

На Android 7.0 все работает нормально. Но на Android 9.0 я получаю следующую ошибку: "Запрошенный битрейт слишком мал"

$ исключение System.InvalidOperationException: Запрошенная скорость передачи данных слишком мала.

в CSJ2K.j2k.codestream.reader.FileBitstreamReaderAgent..ctor

в CSJ2K.j2k .codestream.reader.BitstreamReaderAgent.createInstance

в CSJ2K.J2kImage.FromStream

в CSJ2K.J2kImage.FromBytes *

Поскольку я смотрю на реализацию библиотеки , это условие является проблемой:

            // If cannot even read the first tile-part
            if (anbytes > tnbytes)
                throw new System.ApplicationException("Requested bitrate is too small.");

Я пытался решить проблему с пользовательскими параметрами, но их трудно понять для меня - без каких-либо последствий.

1 Ответ

0 голосов
/ 07 апреля 2020

Я загружаю CSJ2K, версия 3.0.0 в Xamarin. Android пакетом Nuget и отлаживаю на Android 9.0, но без проблем.

Добавление изображения jp2 в файл активов и настройка AndroidAsset

 imageview1 = FindViewById<ImageView>(Resource.Id.imageView1);

        Bitmap bitmap;
        using (var stream = new MemoryStream())
        {
            this.Assets.Open("file2.jp2").CopyTo(stream);
            stream.Seek(0, SeekOrigin.Begin);
            bitmap = J2kImage.FromStream(stream).As<Bitmap>();
        }

        imageview1.SetImageBitmap(bitmap);

Это мой пример на github:

https://github.com/CherryBu/CSJ2KSample

...