@Max_Tr

Как исправить декодирование фото?

Здравствуйте.
Может кто подсказать в чем проблема ?

Я получаю от сервера массив байтов и потом преобразовываю его в imageView. Проблема состоит в том что когда я использовал томкат плагин мавен все было хорошо, но как только начал использовать просто томкат 8 версии , оказалось что
метод
BitmapFactory.decodeByteArray
начал возвращать null.
Ошибка (вернее null) начала показываться после использования TomCat 8 и 9 (пробовал и 7)
Весь код
if (message.getImageMessage() != null) {
            MessageViewHolder2 holder = new MessageViewHolder2();
            LayoutInflater messageInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            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);
            }
        }

Код получения картинки на сервере
public  int size =1_000_000;
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);
    }

}
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы