Witam
Piszę aplikację która ma wysyłać zrzut ekranu do strony internetowej napisanej w PHP
obecnie posługuję się poniższym kodem i teoretycznie wszystko działa tylko że chciał bym go zoptymalizować
chodzi o to że obecnie muszę zapisać plik ze zdjęciem na dysku i dopiero moge go wysłać
a chciał bym robić to bezpośrednio
niestety nigdzie w internecie nie znalazłem innego sposobu na wysyłanie plików jak tylko ten co obecnie używam
Proszę o pomoc i pozdrawiiam
Oto funkcja o którą chodzi
function TExecutiveUnit.printscreen:string;
var
src : TIdMultiPartFormDataStream;
StreamOut1 : TStringStream;
Can : TCanvas;
BMP : TBitmap;
JPG : TJPEGImage;
plik : string;
begin
try
try
plik:=ExtractFilePath(Application.ExeName)+cu.id+'.jpg';
Can := TCanvas.Create; {tworzenie zmiennej }
Can.Handle := GetWindowDC(GetDesktopWindow); {przechwycenie uchwytu ekrnau }
BMP := TBitmap.Create; {tworzenie bitmapy }
BMP.Width := Screen.Width; {szerokosc bitmapy taka jak ekranu}
BMP.Height := Screen.Height; {wysokosc bitmapy taka jak ekranu}
BMP.Canvas.CopyRect(Rect(0, 0, Screen.Width, Screen.Height), Can, Rect(0, 0, Screen.Width, Screen.Height));{skopiu Cam do BMP}
JPG := TJPEGImage.Create;
JPG.Assign(bmp); {Skopiuj}
jpg.CompressionQuality:=50;
jpg.Compress;
JPG.SaveToFile(plik);
application.ProcessMessages;
src := TIdMultiPartFormDataStream.Create;
StreamOut1 := TStringStream.Create('');
src.AddFile('plik',plik, 'multipart/form-data');
form1.idhttp1.Post(serwer+'live/nowyscr.php', src ,StreamOut1);
form1.komunikat(clMoneyGreen,PChar(StreamOut1.DataString));
form1.komunikat(clMoneyGreen,'>>Wysylanie pliku do PHP : OK<<');
application.ProcessMessages;
except form1.komunikat(clred,'>>Wysylanie pliku do PHP : ERROR!<<');end;
finally
Can.Free;
JPG.Free;
BMP.Free;
src.Free;StreamOut1.Free;
deleteFile(plik);
end;
end;