J'ai un système de surveillance et je veux enregistrer une photo à partir d'une caméra lors du déclenchement de l'alarme. J'ai essayé de nombreuses méthodes pour cela ... et tout fonctionne très bien, flux instantané de la caméra, puis enregistrez-le comme un jpg dans le PC .... image (format jpg, 1280 * 1024,140KB) .. C'est bon Mais mon problème est dans la performance de l'application ... L'application a besoin d'environ 20 ~ 30 secondes pour lire la vapeur, ce n'est pas acceptable car cette méthode sera appelée toutes les 2 secondes. J'ai besoin de savoir quel est le problème avec ce code et comment je peux l'obtenir beaucoup plus vite que cela. ? Un grand merci à l'avance code:Lenteur dans la lecture du flux .NET
string sourceURL = "http://192.168.0.211/cgi-bin/cmd/encoder?SNAPSHOT";
byte[] buffer = new byte[200000];
int read, total = 0;
WebRequest req = (WebRequest)WebRequest.Create(sourceURL);
req.Credentials = new NetworkCredential("admin", "123456");
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
while ((read = stream.Read(buffer, total, 1000)) != 0)
{
total += read;
}
Bitmap bmp = (Bitmap)Bitmap.FromStream(new MemoryStream(buffer, 0,total));
string path = JPGName.Text+".jpg";
bmp.Save(path);
sauf que cela peut lire plus rapidement que les données sont écrites dans le flux, ce qui entraînera des pertes de données. Mais l'idée principale, de toute façon, c'est de lire de plus gros morceaux d'octets à la fois. –