コード例 #1
0
        //TODO метод, где не получается сохранить изображение из БД
        private void btnGet_Click(object sender, EventArgs e)
        {
            int    size   = 0;
            Stream stream = new MemoryStream();
            int    id     = (int)cbCategories.SelectedValue;

            _service.GetCategoryImage(ref id, ref size, ref stream);

            #region Сохранение в файл

            /*FileStream targetStream = null;
             * Stream sourceStream = stream;
             *
             * string filePath = @"D:\Temp\getFile.jpg";
             *
             * using (targetStream = new FileStream(filePath, FileMode.Create,
             *      FileAccess.Write, FileShare.None))
             * {
             *      const int bufferLen = 4096;
             *      byte[] buffer1 = new byte[bufferLen];
             *      int count = 0;
             *      while ((count = sourceStream.Read(buffer1, 0, bufferLen)) > 0)
             *      {
             *              targetStream.Write(buffer1, 0, count);
             *      }
             *      targetStream.Close();
             *      sourceStream.Close();
             * }*/
            #endregion

            MemoryStream targetMemoryStream;
            var          imageCat = new byte[size];

            using (targetMemoryStream = new MemoryStream(imageCat))
            {
                const int bufferLen = 4096;
                byte[]    buffer1   = new byte[bufferLen];
                int       count;
                while ((count = stream.Read(buffer1, 0, bufferLen)) > 0)
                {
                    targetMemoryStream.Write(buffer1, 0, count);
                }

                try
                {
                    pbCategoryImage.Image = Image.FromStream(targetMemoryStream);
                }
                catch
                {
                    MessageBox.Show(@"Ошибка при показе изображения.");
                    Clear();
                }
                targetMemoryStream.Close();
                stream.Close();
            }
        }