Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание изображения, из чарового массива байтов 
:(
    Опции темы
Goldberg
Дата 23.10.2004, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я честно говоря еще не понял, что ты там делаешь, но в строчке (unsigned short*)pBits[i] = sr<<10+sg<<5+sb; - cannot convert from 'int' to 'unsigned short *' :)
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Mad
Дата 24.10.2004, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Goldberg
Там я пару ошибок исправил ;-)


--------------------
user posted image
PM MAIL   Вверх
Goldberg
Дата 24.10.2004, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Строчка - (unsigned short)pBits[i] = sr<<10+sg<<5+sb; - по прежнему не хочет работать:(
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Mad
Дата 24.10.2004, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Goldberg
Со всеми исправлениями выглядет так:
Код

char *pBits = new char[250*250*2];
bool b = true;
int psrc = 0
for (int i=0; i<250*250; i++)
{
 unsigned short src = *(unsigned short*)(chReadImage+psrc);
 int sr = 0;
 int sg = 0;
 int sb = 0;
 if (b)
 {
   sr = src & 0xf000>>12;
   sg = src & 0x0f00>>8;
   sb = src & 0x00f0>>4;
   psrc++;
 }
 else
 {
   sr = src&0x0f00>>8;
   sg = src&0x00f0>>4;
   sb = src &0x000f;
   psrc+=2;
 }
 b = !b;

 sr = (float)sr/17.0f*37.0f;
 sg = (float)sg/17.0f*37.0f;
 sb = (float)sb/17.0f*37.0f;
 *((unsigned short*)(pBits+i*2)) = sr<<10+sg<<5+sb;
}

HBITMAP hBitmap = CreateBitmap(250, 250, 1, 16, pBits);
CImage image;
image.Attach(hBitmap);
image.Save("D:\\aaaaa", Gdiplus::ImageFormatGIF);



--------------------
user posted image
PM MAIL   Вверх
Goldberg
Дата 24.10.2004, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нет, все равно не сохраняет, и опять же никаких ошибок не выдает. :(
Что-то в создании БИТМЭПА не правильно:
hBitmap 0x10050d33 {unused=??? } HBITMAP__ *
unused CXX0030: Error: expression cannot be evaluated int

--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Mad
Дата 25.10.2004, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Goldberg
Вопервых ты в дебагере битмап неправильно смотриш (HBITMAP это не указатель :) )

пришли на мыло дфнные одного кадра, посмотрю (хоть GDI+ и нема, но bmp записать должно и без него)


--------------------
user posted image
PM MAIL   Вверх
Goldberg
Дата 25.10.2004, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Mad @ 25.10.2004, 14:19)

дфнные

Что сие есть?

Это сообщение отредактировал(а) Goldberg - 25.10.2004, 15:19
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Mad
Дата 25.10.2004, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Goldberg
сие есть опечатка , следеут читать данные :)
а именно отот твой чаровый масив (просто запиши его в файл и вышли)


--------------------
user posted image
PM MAIL   Вверх
Goldberg
Дата 25.10.2004, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Отослал.
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Goldberg
Дата 25.10.2004, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2Mad
Получил???
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Mad
Дата 26.10.2004, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Goldberg
Да.
Посмотрел.
Вот такой код переводит массив из 12bpp в 16bpp
Код

 char *pBits = new char[250*250*2];
 bool b = true;
 int psrc = 0;

 for (int i=0; i<250*250; i++)
 {
  unsigned short src = *(unsigned short*)(chReadImage+psrc);
  int sr = 0;
  int sg = 0;
  int sb = 0;
  if (b)
  {
   sr = src & 0xf000>>12;
   sg = src & 0x0f00>>8;
   sb = src & 0x00f0>>4;
   psrc++;
  }
  else
  {
   sr = src&0x0f00>>8;
   sg = src&0x00f0>>4;
   sb = src &0x000f;
   psrc+=2;
  }
  b = !b;

  sr = (int)(((float)sr/17.0f)*37.0f)<<10;
  sg = (int)(((float)sg/17.0f)*37.0f)<<5;
  sb = (int)(((float)sb/17.0f)*37.0f);
  unsigned short res = sr+sg+sb;
  pBits[i*2] = (res&0xff00)>>8;
  pBits[i*2+1] = (res&0x00ff);
 }

 HBITMAP hBitmap = CreateBitmap(250, 250, 1, 16, pBits);
 

Поставил GDI+, и попробовал записать картинку - ноль. :(
Кстати HBITMAP нормально создается. После присоединения его CImage правильно определяет его параметры.

Попробуй отказатся от GDI+, и попробовать другую библиотеку, например CxImage, FreeImage (помоему обе на SourceForge были).


--------------------
user posted image
PM MAIL   Вверх
Goldberg
Дата 26.10.2004, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ok.
Спасибо! :)
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
Goldberg
Дата 26.10.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Тут еще вопросик.)
Как сделать массив размером nSize? Ну то есть, например:
int nSize = 9375;
nSize = nSize * 10;
unsigned char chReadImage[nSize]; - Неправильно. Пробовал по разному - не работатет.

Это сообщение отредактировал(а) Goldberg - 26.10.2004, 17:55
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
chipset
Дата 26.10.2004, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



Цитата(Goldberg @ 26.10.2004, 05:55)

unsigned char[nSize];

Вообще то это некорректный синтаксис..
unsigned char i[nSize];
Правда я все равно не уверен..
Вот так делай
unsigned char *i;
i = new char(nSize);


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Mad
Дата 26.10.2004, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

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



Цитата(chipset @ 26.10.2004, 15:59)

i = new char(nSize);

ты наверно имел в виду i = new char[nSize]


--------------------
user posted image
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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