Esempio n. 1
0
        /// <summary>A GET request that returns a bitmap image for XVWeb.</summary>
        public static Bitmap GetBitmap(ApteryxImage img, IProgressHandler progressWindow)
        {
            string     token      = GetAuthorizationToken(); //reuse old token or get a new one.
            UriBuilder uriBuilder = GetApiUri();

            uriBuilder.Path += "bitmap/" + img.Id;
            Stream responseStream = GetRequestHelperStream(token, uriBuilder, accept: GetMimeTypeForImageQuality());
            int    bytesRead;
            Bitmap image;
            long   totalBytesRead = 0;

            byte[] buffer = new byte[10 * 1024];
            using (MemoryStream ms = new MemoryStream()) {
                try {
                    while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        totalBytesRead += bytesRead;
                        if (totalBytesRead != img.FileSize)
                        {
                            progressWindow.UpdateBytesRead(totalBytesRead);
                        }
                        ms.Write(buffer, 0, bytesRead);
                    }
                    progressWindow.CloseProgress();
                }
                catch (Exception ex) {
                    progressWindow.DisplayError(ex.Message);
                }
                image = new Bitmap(ms);
            }
            responseStream.Close();
            return(image);
        }