Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Bitmap from TBytes


Savek   (27.05.17 14:07

нужно передать с клиента (пишется Android Studio) на сервер (Win7, D2010) картинку
код на клиенте:
          BitmapFactory.Options options = new BitmapFactory.Options();
               options.inPreferredConfig = Bitmap.Config.RGB_565;
               Bitmap bpS = BitmapFactory.decodeFile(photoDir+"/"+kod+".jpg", options);
               int byteSize = bpS.getRowBytes() * bpS.getHeight();
               ByteBuffer byteBuffer = ByteBuffer.allocate(byteSize);
               bpS.copyPixelsToBuffer(byteBuffer);
               byte[] byteArray = byteBuffer.array();
               try {
//размер данных
                   b = ByteBuffer.allocate(4).putInt(byteArray.length).array();
                   client.getOutputStream().write(b);
                   client.getOutputStream().write(byteArray);
               } catch (IOException e) {
                   h.sendEmptyMessage(6);
               }

код на сервере
       
        e:=AContext.Connection.Socket.ReadLongInt();
        AContext.Connection.Socket.ReadBytes(buff,e,false);
        st:=TMemoryStream.Create;
        st.Write(buff[0],e);
        bmp:=TBitmap.Create;
        bmp.LoadFromStream(st);

данные передаются, но в Bitmap не грузятся. Видимо, данные не соответствуют ожидаемому формату. Кто в теме пните в нужном направлении. Либо как их раскодировать на сервере, либо как подготовить в нужном виде на клиенте.


Игорь Шевченко ©   (27.05.17 14:13[1]


> Видимо, данные не соответствуют ожидаемому формату


Видимо данные настолько секретные, что их нельзя посмотреть в отладчике/вывести в лог ?


invis ©   (27.05.17 14:42[2]

LoadFromStream ожидает битмап со всеми заголовками (bmp-файл, фактически), а посылаются одни данные.


Savek   (27.05.17 16:13[3]


> Игорь Шевченко ©   (27.05.17 14:13) [1]
>
> > Видимо, данные не соответствуют ожидаемому формату
>
>
> Видимо данные настолько секретные, что их нельзя посмотреть
> в отладчике/вывести в лог ?
>
>


данные не секретные, но мне они ни о чём не говорят. сказывается недостаток знания по теме

> invis ©   (27.05.17 14:42) [2]
> LoadFromStream ожидает битмап со всеми заголовками (bmp-
> файл, фактически), а посылаются одни данные.


а как правильно послать данные?
платформа то другая. Записать в стрим и отправить его нельзя, ну или по крайней мере я пока не умею


Eraser ©   (27.05.17 16:47[4]


> Savek   (27.05.17 16:13) [3]

в сети полно примеров получения как bmp, так и png данных.

> client.getOutputStream().write(b);


> e:=AContext.Connection.Socket.ReadLongInt();

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


Savek   (29.05.17 10:31[5]

к ReadLongInt как раз претензий нет, длина передаётся правильно, проверял
что касается примеров в сети, кинул бы пару ссылок, я б тебе спасибо сказал бы)
Пока последую совету [1]. попробую сравнить полученный массив байт из сокета и сформированный на сервере из одного и того же файла, вдруг что-то прояснится


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо