Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 01.02.2009, 00:29   #1
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию jpeg,gif файлы

делаю курсак на WinAPI
задание следующее :
реализовать нечто подобное на телефонную базу абонентов с поддержкой фотографий (jpeg,gif,bmp).

Описал такую вот структуру

Код:
typedef struct info {

           int phone;
           int date;
           char adress[20];
	char name[20];
	char work[20];
              
}INFO;
так вот вопросы:
1. как в этой структуре описать фотку?
2. как записать эту фотку в файл, чтобы потом при надобности извлечь информацию об абоненте из базы и показать в окне?

В нете нашел про это кучу инфы, но толком ничего не понял как это делается.
Если кто делал нечто подобное поделитесь мыслями или ссылочки какие нибудь дайте, где это все будет описано в более простой форме...
counter вне форума Ответить с цитированием
Старый 01.02.2009, 00:48   #2
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Описывай как массив байтов, ведь картинка - это просто матрица. Как у тебя будут храниться картинки? Если отдельными файлами - опиши просто как путь до файла тогда... Потом на форме уже выводи
r9m вне форума Ответить с цитированием
Старый 01.02.2009, 02:25   #3
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

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

а что за чудо такое BITMAP ?
я так понял это и есть этот массив байтов?
как работать с форматами jpeg,gif - их требуется распаковывать?
counter вне форума Ответить с цитированием
Старый 01.02.2009, 13:17   #4
litrovith
Пользователь
 
Регистрация: 15.07.2008
Сообщений: 28
По умолчанию

counter, зачем урезать картинки до нужного размера? Добавьте в свою структуру указатель на следующую и размер картинки в байтах, после структуры вписывайте в файл с БД картинку. Т.е. при загрузке в программу файла базы данных читаете phone, date, adress... узнаёте размер картинки, читаете нужное кол-во байт, показываете картинку, узнаёте на сколько байт вам нужно переместиться далее и так по циклу.
Пс. Мм я с бодуна, понятно выражаюсь?

размер картинки в структуре можно и не описывать, а вычислять при помощи указателя на следующую структуру.

Последний раз редактировалось litrovith; 01.02.2009 в 13:28.
litrovith вне форума Ответить с цитированием
Старый 01.02.2009, 15:04   #5
kiloz
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 42
Радость

Можно не байти считывать, а текст
Вот примерчик, но на делфе
Код:
function BitmapToRTF(pict: TBitmap): string;
 // by D3k
var
 bi, bb, rtf: string;
 bis, bbs: Cardinal;
 achar: ShortString;
 hexpict: string;
 I: Integer;
begin
  GetDIBSizes(pict.Handle, bis, bbs);
  SetLength(bi, bis);
  SetLength(bb, bbs);
  GetDIB(pict.Handle, pict.Palette, PChar(bi)^, PChar(bb)^);
  rtf := '';
  SetLength(hexpict, (Length(bb) + Length(bi)) * 2);
  I := 2;
  for bis:=1 to Length(bi) do begin
     achar := Format('%x', [Integer(bi[bis])]);
     if Length(achar) = 1 then
       achar := '0' + achar;
     hexpict[I - 1] := achar[1];
     hexpict[I] := achar[2];
     Inc(I, 2);
  end;
  for bbs:=1 to Length(bb) do begin
    achar := Format('%x', [Integer(bb[bbs])]);
    if Length(achar) = 1 then
      achar := '0' + achar;
    hexpict[I - 1] := achar[1];
    hexpict[I] := achar[2];
    Inc(I, 2);
  end;
  rtf := rtf + hexpict;
  Result := rtf;
end;
Обратное кодировани выполняется естественно обратными действиями...
kiloz вне форума Ответить с цитированием
Старый 02.02.2009, 00:02   #6
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Спасибо за советы. Буду разбираться.
counter вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jpeg warmbabe Общие вопросы по Java, Java SE, Kotlin 2 26.02.2010 21:14
Jpeg Артэс Win Api 1 29.11.2008 09:48
DBImage + jpeg + gif Cyn4uk БД в Delphi 10 23.12.2007 20:24
jpeg All517 БД в Delphi 15 22.11.2007 15:31
Как отображать в своей программе файлы *.gif с анимацией? SalasAndriy Общие вопросы C/C++ 1 02.11.2007 13:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS