Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
1 / 1 / 0
Регистрация: 10.12.2010
Сообщений: 49

Некорректное отображение изображения в PictureBox

30.07.2018, 17:53. Показов 1787. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день возникла проблема. Сохраняю картинку из PictureBox в бд. Сохранение проходит нормально но вот отображение картинка не корректное.
Код добавления картинки в бд с процессом сжатия:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
private ImageCodecInfo GetEncoder(ImageFormat format)
        {
            ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
            foreach (ImageCodecInfo codec in codecs)
            {
                if (codec.FormatID == format.Guid)
                {
                    return codec;
                }
            }
            return null;
        }
        //метод описывающий сохранение картинки в базе данных
        private void savepicture()
        {
            if(pictureBox1.Image!=null)
            {
                MemoryStream ms = new MemoryStream();
                pictureBox1.Image.Save(ms, pictureBox1.Image.RawFormat);
                Bitmap bmp1 = new Bitmap(ms);
                
                    ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg);
 
                    //создаем объект myEncoder на основе идентификатора GUID для категории параметров качества сжатия
                    System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
 
                    EncoderParameters myEncoderParameters = new EncoderParameters(1);
 
                    EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 0L);
                    myEncoderParameters.Param[0] = myEncoderParameter;
                    bmp1.Save(ms, jpgEncoder, myEncoderParameters);
                
                byte[] a = ms.GetBuffer();
                ms.Close();
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@picture", a);
                cmd.CommandText = "insert into Picture (name, picture) values ('" + textBox1.Text.Trim() + "', @picture)";
                myConn.Open();
                cmd.ExecuteNonQuery();
                myConn.Close();
                textBox1.Text = "";
                pictureBox1.Image = null;
                MessageBox.Show("Картинка добавлена", "Добавление изображение выполнено");
            }
            else
            {
                MessageBox.Show("No!!!");
            }
        }
Картинка в базе отображает и процесс загрузки происходит.
Также на форме есть ListBox в который после загрузки добавляется описание к загруженной картинке. Когда я нажимаю на описание в ListBox картинка должна отображаться в PictureBox но она не отображается корректно.
Код при нажатии описания в ListBox:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 private void loadpicture()
        {
            myConn.Open();
            cmd.CommandText = "select picture from picture where id='" + listBox1.Text.ToString() + "'";
            SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
            SQLiteCommandBuilder cbd = new SQLiteCommandBuilder(da);
            DataSet ds = new DataSet();
            da.Fill(ds);
            myConn.Close();
            byte[] ap = (byte[])(ds.Tables[0].Rows[0]["picture"]);
            MemoryStream ms = new MemoryStream(ap);
            pictureBox1.Image = Image.FromStream(ms);
            pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox1.BorderStyle = BorderStyle.Fixed3D;
            textBox1.Text = listBox2.Text.ToString();
            ms.Close();
 
        }
картинка отображается как на фото. Помогите найти ошибку или подскажите корректный метод схатия изображения, мне кажется в нем ошибка.
Миниатюры
Некорректное отображение изображения в PictureBox  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.07.2018, 17:53
Ответы с готовыми решениями:

Некорректное отображение Graphics в PictureBox при событии SizeChanged у контейнера
using System; using System.Drawing; using System.Windows.Forms; namespace AppForForum { public partial class Form1 : Form ...

Попиксельное отображение изображения в PictureBox
Всем привет. Такой вопрос: как в picturebox сделать попиксельное отображение изображения? Т.е. например у меня есть матрица 640х480 со...

Склеивание изображения нескольких picturebox в один picturebox
Здравствуй, такой вопрос возник на счет picturebox. Можно ли из 3-ех к примеру picturebox(в каждом одинаковая картинка) Склеить все...

2
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
30.07.2018, 18:12
C#
1
byte[] a = ms.GetBuffer();
=>
C#
1
byte[] a = ms.ToArray();
А еще у вас один и тот же MemoryStream 2 раза используется... Наверняка после такого там мусор один...
И вообще жуткий говнокод... using? Не не слышал...
0
Эксперт .NET
 Аватар для Rius
13112 / 7673 / 1674
Регистрация: 25.05.2015
Сообщений: 23,399
Записей в блоге: 14
30.07.2018, 18:12
На поверхностный взгляд:
  • Используйте полностью параметрические запросы, а не это составное нечто;
  • Правильность чтения и записи файла в поток проверьте через FileStream вместо MemoryStream;
  • MemoryStream.GetBuffer() замените на MemoryStream.ToArray();
  • Не надо писать подряд в MemoryStream, не очищая его и не сбрасывая позицию потока, ибо может получиться бред.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.07.2018, 18:12
Помогаю со студенческими работами здесь

Как добиться качественного рисования изображения поверх изображения picturebox?
есть код: PictureBox p = (PictureBox)sender; p.SizeMode = PictureBoxSizeMode.Normal; ...

Некорректное отображение в WebBrowser
Во всех браузерах,в том числе IE страница отображается корректно. Когда я пытаюсь ее загрузить через Windows.Forms.WebBrouser вылетает...

Некорректное отображение текста из файла
у меня возникла проблема с отображением текста. Я из текстовых файлов передаю данные в listBox. Как выходит: Как делаю: ...

Некорректное отображение .mht файла
Здравствуйте. У меня есть веб-служба и приложение. Служба получает определённый файл, а приложение его должно отображать в компоненте...

Некорректное отображение формы на других ПК
Здравствуйте, вот только сейчас заметил одну интересную вещь, почему то у меня мои программы отображаются корректно, а у других...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru