Форум: "Сети";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
Внизкак передать результат снития скриншота по сетке ? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c