Поиск:

Ответ в темуСоздание новой темы Создание опроса
> преобразование jpg в массив byte, преобразование jpg в массив byte 
:(
    Опции темы
rainebove
Дата 20.3.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.3.2008

Репутация: нет
Всего: нет



Здравствуите. Подскажите как преобразовать файл jpg в последовательность байт (тип данных byte). И еще, можно как нибудь изменить размеры изображения? Использую jpeg.hpp.
PM MAIL   Вверх
JackYF
Дата 20.3.2008, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(rainebove @  20.3.2008,  13:46 Найти цитируемый пост)
Использую jpeg.hpp. 

Мда. И что это за jpeg.hpp такое? Название технологии, библиотеки, инструмента?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
comcon1
Дата 20.3.2008, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



libjpeg??


--------------------
PM MAIL   Вверх
rainebove
Дата 20.3.2008, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.3.2008

Репутация: нет
Всего: нет



Цитата

Мда. И что это за jpeg.hpp такое? Название технологии, библиотеки, инструмента?

В Builder 6 просто написал #include <jpeg.hpp>

Если конкретно то я пишу прогу которая делает скриншиты экрана и передает их по сети. 
Пока написал только это:

Код

  Graphics::TBitmap *bm = new Graphics::TBitmap;
  HDC hdc = GetWindowDC(NULL);
  int height = GetDeviceCaps(hdc,VERTRES);
  int width = GetDeviceCaps(hdc,HORZRES);
  bm->Width =width;
  bm->Height =height;
  BitBlt(bm->Canvas->Handle,0, 0, bm->Width, bm->Height,GetDC(0),0, 0,SRCCOPY);


  TJPEGImage * jpg=new TJPEGImage();
  jpg->Assign(bm);
  jpg->CompressionQuality=StrToInt(Edit1->Text);
  jpg->Compress();

  jpg->SaveToFile("C:\\op.jpg");

  delete jpg;
  delete bm;


Массив баит нужен так как для передачи по сети необходимо использовать corba.

Это сообщение отредактировал(а) rainebove - 20.3.2008, 18:52
PM MAIL   Вверх
JackYF
Дата 20.3.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Ну дык в билдер, значит, и тему всю надо.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
rainebove
Дата 21.3.2008, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.3.2008

Репутация: нет
Всего: нет



Цитата

Ну дык в билдер, значит, и тему всю надо.

Если не ошибаюсь это и есть тама про билдер?
PM MAIL   Вверх
ksili
Дата 21.3.2008, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Цитата(rainebove @  20.3.2008,  18:46 Найти цитируемый пост)
как преобразовать файл jpg в последовательность байт

Всё что хранится в памяти компьютера - это и есть последовательность байт

Добавлено через 1 минуту и 47 секунд
Цитата(rainebove @  20.3.2008,  21:29 Найти цитируемый пост)
jpg->SaveToFile("C:\\op.jpg");

Если jpeg сохранён в файл, его можно открыть в двоичном режиме и считать в массив типа BYTE


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
rainebove
Дата 21.3.2008, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.3.2008

Репутация: нет
Всего: нет



Цитата

Если jpeg сохранён в файл, его можно открыть в двоичном режиме и считать в массив типа BYTE


Наверно можно загрузить фаил в поток, но сохранять на диск нехочется (я сделал это чтоб проверить работоспособность кода) чтоб загрузит в поток можно использовать метод jpg->SaveToStream(stream) а потом из потока stream как нибудь запихнуть в массив типа byte только как это правильно сделать?

PM MAIL   Вверх
ksili
Дата 21.3.2008, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Ну наверно, можно примено так:
Код

TStringStream *Info = new TStringStream("");
Byte *mas;

....

mas = new Byte[Info->Size];
memcpy(mas, Info->DataString.c_str(), Info->Size);

....



Я работоспособность не проверял. Надо там типы привести, ну и вообще отшлифовать по мелочам...


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
comcon1
Дата 21.3.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Цитата(rainebove @  20.3.2008,  17:29 Найти цитируемый пост)
делает скриншиты экрана

 smile  smile  smile  smile 



--------------------
PM MAIL   Вверх
rainebove
Дата 21.3.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.3.2008

Репутация: нет
Всего: нет



Цитата

делает скриншиты экрана
 smile  smile  smile  smile         

Чего смешного, если сильно шариш лучше бы помог.

Чем можно скопировать поток TStream например в массив byte???
PM MAIL   Вверх
ksili
Дата 21.3.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



rainebove, мой способ чем не подходит?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
rainebove
Дата 21.3.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 5.3.2008

Репутация: нет
Всего: нет



memcpy вроде только для строк, и непонатно как чтото подобное Info->DataString сделать с  TStream т.е как обратится к данным потока такого метода у TStream нет. Поправте если ошибаюсь.

PM MAIL   Вверх
andrew_121
Дата 21.3.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: нет
Всего: 33



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


rainebove, Я правильно понял ?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
ksili
Дата 21.3.2008, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



memcpy для памяти. Можно им копировать что угодно, куда угодно (в смысле от типа не зависит)

TStringStream это наследник TStream. используй его, он может всё что может TStream плюс ещё кое-что )))
Я не уверен, но вроде TStream в чистом вде не используют. У него еть несколько наследников: TStringStream, TMemoryStream и др. Вот их и используют

Info->DataString - это вcе данные потока в виде AnsiString

Добавлено через 1 минуту и 6 секунд
Цитата(andrew_121 @  21.3.2008,  16:02 Найти цитируемый пост)
Я думаю что он имеет ввиду - разложить на пиксельное представление.

Да нет, зачем ему раскладывать? Ему же просто по сети передать надо, целиком


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0955 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.