Как я могу устранить общую ошибку в gdi +. в vb.net?

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

Ниже мой код:

Try
   With mEmployee
     If Miscellaneous.GetImageName(ofdPhoto).ToLower = "No_Photo.jpg".ToLower Then
        .Image = Nothing
     Else
         Dim stream As New MemoryStream
         pbImage.Image.Save(stream, pbImage.Image.RawFormat)
         .Image = stream.GetBuffer()
     End If
  End With
Catch ex As Exception
   MessageBox.Show(ex.Message)
End Try

Вы наверняка должны предположить, что данные в базе данных не являются правильно закодированным изображением, использующим один из стандартных форматов файлов. Это обычное дело для изображений, хранящихся, например, в базе данных Access. Фрагмент кода не имеет отношения к делу, он ничего не делает с базой данных.

Hans Passant 11.04.2018 11:57

Спасибо за этот комментарий. Этот код связан с установщиком данных для обновления таблицы базы данных со строкой mEmployee.Image = stream.GetBuffer (). Но в этот момент он выдает исключение каждый раз, когда я не выбираю новое изображение для обновления.

Sophart Phun 12.04.2018 03:23
0
2
349
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Теперь все решено. Эта общая ошибка GDI +, вызванная самим графическим блоком. Фактически, когда я связал запись с изображением из базы данных и обновил эту запись, не обновляя изображение в PictureBox, в поле изображения были установлены старые данные byte () из поля, и это вызвало ошибку.

Чтобы решить эту проблему, я объявил переменную типа byte () для хранения данных временного изображения byte () из базы данных, и при обновлении, если изображение не было изменено, оно будет установлено с данными из этой переменной. Это мой код, который решает все:

Try
            If Miscellaneous.GetImageName(ofdPhoto).ToLower = "No_Photo.jpg".ToLower Then
                .Image = Nothing
            Else
                If isImageChanged = True Then
                    Dim stream As New MemoryStream
                    pbImage.Image.Save(stream, pbImage.Image.RawFormat)
                    .Image = stream.GetBuffer()
                    isImageChanged = False
                ElseIf isRemoveImage = True Then
                    .Image = Nothing
                    isRemoveImage = False
                Else
                    .Image = tempImage
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

Другие вопросы по теме