Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2009, 18:54   #1
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию intel graphic library и сокеты

подскажите пожалуйста как сжать изображение с помощью библиотекы intel graphic и передать его с помощью сокетов...
ikot вне форума Ответить с цитированием
Старый 01.06.2009, 22:54   #2
ikot
Пользователь
 
Регистрация: 29.09.2008
Сообщений: 56
По умолчанию неужели никто не может помочь?

неужели никто не может помочь? Или просто не сталкивались с подобной ситуацией?
ikot вне форума Ответить с цитированием
Старый 02.06.2009, 01:43   #3
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

про intel graphic не в курсе.

Изображение скорее всего большое по размеру, поэтому нужно передавать секциями, вот копирую для тебя код:

Сервер

Ставим компонент ServerSocket.
В коде:
Код:
...

procedure TForm1.FormCreate(Sender: TObject);
begin
  ServerSocket1.Active := True;
  ServerSocket1.Port   := 5555;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ServerSocket1.Active := False;
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  Label.Caption := 'Есть контакт с ' + Socket.RemoteHost;
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Label.Caption := 'Нет контакта';
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  fs: TFileStream;
begin
  if Socket.ReceiveText = 's' then begin
    fs:=TFileStream.Create(Edit1.Text, fmOpenRead);
   try
     fs.Position := 0;
     Socket.SendText('Size:'+ IntToStr(fs.Size) + #0);
     Socket.SendStream(fs);
   finally end;
  end;
end;

...
У клиента ставим на форму ClientSocket

Код:
...

private
  fs       : TFileStream;
  Reciving : Boolean;
  DataSize : integer;

...

var
  Form1           : TForm1;
  SizeRecevi,cond : Integer;
  LB              : longbool;

...

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ClientSocket1.Active:=False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SizeRecevi:=0;
  Reciving:=false;
  ClientSocket1.Port := 5555;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
  Label3.Caption:='Есть контакт с ' + Socket.RemoteHost;
  Socket.SendText('s');
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Label3.Caption:='Нет контакта';
end;

procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  s, sl: string;
begin
 if copy(s, 1, 5) = 'Size:' then begin
  sl := copy(s, 6, Pos(#0, s)-6);
  DataSize := StrToInt(sl);
  SizeRecevi := SizeRecevi+DataSize;
  Label4.Caption := 'Принято'+inttostr(SizeRecevi)+' B';
  Delete(s, 1, Pos(#0, s));
  Reciving := true;
  fs := TFileStream.Create(Edit2.Text,fmCreate);
  fs.Write(s[1], length(s));
 end;

 s:=Socket.ReceiveText;

 if Reciving then begin
  fs.Write(s[1], length(s));
  if fs.Size=DataSize then begin
      fs.Free;
      Reciving:=false;
      cond:=1;
      CopyFile('input.in','input.ini',LB);
  end;
  exit;
 end;
end;

...
BaronTreep вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
graphic.h sizzlorr Общие вопросы C/C++ 1 12.05.2009 20:11
Windows Layer Library BOBAH13 Мультимедиа в Delphi 1 23.08.2008 19:42
Выложите MSDN library KJIOyH Общие вопросы C/C++ 3 20.10.2007 11:21