Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 12.11.2016
Сообщений: 29
1

Не работает декодировка фото в tom cat 9

13.05.2019, 00:36. Показов 435. Ответов 4

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Может кто подсказать в чем проблема ?

Я получаю от сервера массив байтов и потом преобразовываю его в imageView. Проблема состоит в том что когда я использовал томкат плагин мавен все было хорошо, но как только начал использовать просто томкат 8 версии , оказалось что
метод
Java
1
BitmapFactory.decodeByteArray(
начал возвращать нулл.
Ошибка (вернее null) начала показываться после использования TomCat 8 и 9 (пробовал и 7)
Весь код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 byte [] ar = message.getImageMessage().getByteArray();
            Bitmap bmp = BitmapFactory.decodeByteArray(ar , 0, ar.length);
 
            if (bmp!=null) {
 
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                bmp.compress(Bitmap.CompressFormat.JPEG, 10, out);
                byte[] byteArray = out.toByteArray();
 
                // MY IMAGE
                //   if (message.getImageMessage().isFromMe()) {
                // Convert bytes data into a Bitmap
                convertView = messageInflater.inflate(R.layout.image_my_message_layout, null);
                holder.messageBody = (ImageView) convertView.findViewById(R.id.imageMessageView);
                holder.messageBody.setImageBitmap(bmp);
 
       
                double width = bmp.getWidth();
                double height = bmp.getHeight();
 
                double koef = height / 1000;
                int newWidht = (int) (width / koef);
                int newheight = (int) (height / koef);
 
                Bitmap bmHalf = Bitmap.createScaledBitmap(bmp, newWidht, newheight, false);
                holder.messageBody.setImageBitmap(bmHalf);
            }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2019, 00:36
Ответы с готовыми решениями:

Tom Clancy's Splinter Cell Conviction не работает на видеокарте nvidia geforce gt 330
добрый вечер!уговорила мужа купить мне ноутбук, согласился взять подороже, только при условии, что...

Объявление класса Cat в файле Cat.hpp?
Всем доброго время суток столкнулся с такой вот проблемой, нужно объявить класс Cat в файле...

Команда cat не работает
День добрый господа. Возникла проблема с командой cat, как видно на скриншоте команда не работает...

При cat не работает <Ctrl + D> !
Здравствуйте, уважаемые форумчане! Если есть время и/или/ не лень, подскажите начинающему... У...

4
224 / 182 / 80
Регистрация: 13.04.2014
Сообщений: 679
13.05.2019, 17:25 2
https://developer.android.com/... t,%2520int)
returns The decoded bitmap, or null if the image could not be decoded.
0
3 / 3 / 0
Регистрация: 12.11.2016
Сообщений: 29
13.05.2019, 20:11  [ТС] 3
Что вы хотите сказать? Суть же вопроса в том что , почему вертается null , если на том кат мавен это же работает?
0
224 / 182 / 80
Регистрация: 13.04.2014
Сообщений: 679
13.05.2019, 20:17 4
есть предположение что картинка приходит в base64(String) формате и идёт преобразование в массив байт обычной строки. но пока это просто предположение т.к. не известно что приходит с сервера.

можно поподробней откуда берется byteArray: что за message и imageMessage
Java
1
message.getImageMessage().getByteArray();
0
3 / 3 / 0
Регистрация: 12.11.2016
Сообщений: 29
14.05.2019, 00:45  [ТС] 5
message -- это объект который хранит в себе 2 объекта (текстовое сообщение и сообщение-картинка) TextMessage и ImageMessage.
ImageMessage (объект с которым я работаю в этом случае ) имеет структуру:

Java
1
2
3
public class ImageMessage {
    private  byte[] byteArray; // массив байт изображения
    private  boolean fromMe;  // просто проверка на то от кого картинка
Метод который принимает ByteString bytes заворачивает его в объект message.ImageMessage
Java
1
2
3
4
5
6
7
   @Override
    public void onMessage(WebSocket webSocket, ByteString bytes) {
        ImageMessage imageMessage = new ImageMessage(bytes.toByteArray(), false);
        imageMessage.setByteArray(bytes.toByteArray());
        MergedMessage [U]message[/U] = new MergedMessage(imageMessage);
        chatActivity.onMessage(mergedMessage);
    }
Сервер хранит и пересылает массив байт таким методом
Код сервера

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
    private int size = 1_000_000;
     private  int sizeFoto = 0;
    public ByteBuffer bbuf = ByteBuffer.allocate(size);
 
    @OnMessage
    public void processUpload(ByteBuffer msg, boolean last, Session session) {
        sizeFoto += msg.array().length;
        if (msg.remaining() != 1) {
            bbuf.put(msg);
        } else {
            System.err.println("Size : " + sizeFoto);
            bbuf.put(msg);
            sendBuf(bbuf);
        }
    }
0
14.05.2019, 00:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.05.2019, 00:45
Помогаю со студенческими работами здесь

Как работает утилита cat?
всем здарсте ) подскажите пожалуйста такую вещь : $cat station tape pens &gt; suppy а потом хочу ...

Коннекторы RJ-45 Cat 5, Cat 5e, Cat 6
В продаже имеются коннекторы RJ-45 категорий 5, 5е, 6 разница в цене достигает 5 раз. Что в итоге...

Не работает ссылка типа page.php?cat=1&id=2
Доброго всем времени суток! Третий день бьюсь над такой проблемой: В трехуровневом меню, которое...

Декодировка md5
Есть код для авторизации &lt;?php include &quot;db.php&quot;; $USERNAME = $_POST; $PASSWORD = md5($_POST);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru