Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.24;
Скачать: CL | DM;

Вниз

как передать результат снития скриншота по сетке ?   Найти похожие ветки 

 
Ghost   (2003-05-19 07:59) [0]

Большая просьба не перекидывать этот вопрос в "потрепаться" , я уже задавал этот вопрос но его перекинули и забыли :(

Вот сам вопрос : я снимаю скриншот экрана с помощью вот такого кода :
function ImageDesktopToBMP: TBitmap;
var DtDC: HDC;begin
Result := TBitmap.Create; Result.Width := Screen.Width; Result.Height := Screen.Height;
DtDC := GetDC(0);BitBlt(Result.Canvas.Handle, 0, 0, Result.Width,Result.Height, DtDC, 0, 0, SRCCOPY);
ReleaseDC(0, DtDC)end;


function print: Integer; stdcall;
var bmp: TBitmap;jpg: TJPEGImage; begin
try bmp := ImageDesktopToBMP; jpg := TJPEGImage.Create; jpg.CompressionQuality := 65;
jpg.Assign(bmp); jpg.SaveToFile(ExtractFilePath(paramstr(0))+"ps\img.jpg");
freeAndNil(jpg); FreeAndNil(bmp);
except on EAccessViolation do ;end;end;

вызываеться функция print ( из dll ) которая преобразует результат полученой картинки с помощью функции ImageDesktopToBMP
( bmp ) в jpg и сохраняет его на диске. Вопрос как не сохраняя
полученый результат на диск передать его по сети ( так как сохранение в файл очень сильно тормозит компьютер )

Подскажите пожайлуста .


 
Ghost   (2003-05-19 08:01) [1]

Передачу по сети файлов я знаю как делать. Только не знаю как передать результат скриншота


 
Digitman ©   (2003-05-19 10:15) [2]

зачем файл-то нужен для этой цели ?

используй методы SaveToStream/LoadFromStream для сохранения в поток и загрузки из потока

поток - объект класса TMemoryStream, адрес поточных данных - св-во TMemoryStream.Memory, размер поточных данных - TMemoryStream.Size.


 
Ghost   (2003-05-19 11:21) [3]

спасибо , подскажите пожайлусто как в обычный компонент image поместить поток ! я делаю так : image1.Picture.Bitmap.LoadFromStream но при получении потока в image не отображаеться картинка :( как правельно помещать поток в image ?


 
Digitman ©   (2003-05-19 11:55) [4]

var
MyStream: TMemoryStream;


MyStream := TMemoryStream.Create;
try

//сохраняем данные компонента SourceJPEGImage в поток

SourceJPEGImage.SaveToStream(MyStream);

//считываем из потока данные в компонент TargetJPEGImage

MyStream.Position := 0; // !!

TargetJPEGImage.LoadFromStream(MyStream);

finally
MyStream.Free;
end;









 
Ghost   (2003-05-19 12:48) [5]

что за компонент TargetJPEGImage ?
в обычную image не получаеться загрузить , хотя передать потоком
получилось :)



 
Digitman ©   (2003-05-19 13:04) [6]


> Ghost


о ,господи, воля твоя !))

ну думать-то головой будем ?)

вот твоя строчка

var jpg: TJPEGImage;

а вот моя

var SourceJPEGImage, TargetJPEGImage: TJPEGImage;

найди различия)))


 
Ghost   (2003-05-19 13:17) [7]

мы по моему не поняли немного друг друга

передаю потоком ! всё ок , но при получении не могу вставить в image, хотя могу сохранить на диске ( из чего следует что передача прошла успешно )
делаю так :

MyStream.Position := 0;
form1.Image1.picture.Bitmap.LoadFromStream(MyStream);

в MyStream уже есть данные с картинкой

В итоге в image ybabuf не отображаеться


 
Digitman ©   (2003-05-19 13:28) [8]

1.

вот две строчки :

эта - рекомендуемая мной

TargetJPEGImage.LoadFromStream(MyStream);

а эта - та что у тебя не работает (но которую ты упрямо почему-то цитируешь раз за разом)

Image1.picture.Bitmap.LoadFromStream(MyStream);

где и Image1 и TargetJPEGImage есть ссылки на существующие объекты класса TJPEGImage

разницу хоть какую-нибудь ощущаешь ?)

2. Вопрос твой - в разделе "Сети". Хотя причем здесь именно сеть - мне совершенно непонятно.


 
ghost   (2003-05-19 13:38) [9]

> 2. Вопрос твой - в разделе "Сети". Хотя причем здесь именно сеть - мне совершенно непонятно.

Потому что вопрос начинался с передачи потока по сети ,

1 извени за тормоза но я не понял как отобразить в image TargetJPEGImage ? может я гоню уже , но не могу врубиться !
получаю поток как ты посоветовал выше в TargetJPEGImag

как теперь это отобразить ?


 
Digitman ©   (2003-05-19 14:26) [10]

procedure TForm1.Button4Click(Sender: TObject);
var
bmp: TBitmap;
MemStream: TMemoryStream;
SourceJPEGImage, TargetJPEGImage: TJPEGImage;
begin
SourceJPEGImage := TJPEGImage.Create;
TargetJPEGImage := TJPEGImage.Create;
try
SourceJPEGImage.CompressionQuality := 65;
bmp := ImageDesktopToJPEG;
try
SourceJPEGImage.Assign(bmp);
finally
bmp.Free;
end;
MemStream := TMemoryStream.Create;
try
SourceJPEGImage.SaveToStream(MemStream);

MemStream.Position := 0;
TargetJPEGImage.LoadFromStream(MemStream);

with Image1.Picture do
begin
if not Assigned(Bitmap) then
Bitmap := TBitmap.Create;
Graphic.Assign(TargetJPEGImage);
end;


finally
MemStream.Free;
end;
finally
TargetJPEGImage.Free;
SourceJPEGImage.Free;
end;
end;


 
app ©   (2003-05-19 14:44) [11]

Повторное задание вопроса равносильно спаму, тем более в другой конференции, далее просто думай, где задавать вопрос, тебе еще повезло, по идее его лучше было удалить.


 
Digitman ©   (2003-05-19 14:49) [12]

да еще и не по теме вопрос)


 
Ghost   (2003-05-19 14:53) [13]

Спасибо всем ! я уже разобрался :)



Страницы: 1 вся ветка

Текущий архив: 2003.07.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
14-78140
Milz
2003-07-09 11:12
2003.07.24
Преобразование отдела АСУ в отдельную фирму


8-78005
reticon
2003-03-31 22:16
2003.07.24
TMediaPlayer


14-78089
mukha
2003-07-06 16:52
2003.07.24
штрих-коды


1-77984
MaXie
2003-07-11 12:44
2003.07.24
Как определить событие OnChange?


1-77894
kat
2003-07-14 10:49
2003.07.24
Проблема с ComboBox