OutOfMemory при сохранении изображения в Richtextbox - PullRequest
0 голосов
/ 21 ноября 2018

Я использую richtextbox в качестве полей примечаний, которые позволяют пользователю добавлять изображение

Теперь я получаю ошибку вне памяти при сохранении полей, когда он содержит изображение с разрешением 4800x2800, возникает ошибка

on rtfText = Me.txtNotes.Rtf, когда я отлаживаю его

«Произошло необработанное исключение типа« System.OutOfMemoryException »в mscorlib.dll»

есть ли ограничение на размер?Я планирую ограничить изображение до 1920x1080, но не знаю, как, поскольку оно возвращает ошибку OOM, прежде чем я что-то могу сделать (я думаю, что это из richtextbox.rtf)

Буду признателен, если смогу получить помощь по ограничению разрешения изображениякоторые можно добавить

Private Function ValidateRichTextImage() As Boolean
    Dim rtfText As String
    Dim width As Integer
    Dim height As Integer


    rtfText = Me.txtNotes.Rtf

    Dim widthRegex As New Regex("picwgoal[\d]+")
    Dim heightRegex As New Regex("pichgoal[\d]+")
    Dim widthmatch = widthRegex.Match(rtfText)
    If widthmatch.success Then
        Dim swidth As String = widthmatch.ToString.Replace("picwgoal", "")
        width = Integer.Parse(swidth) / 15
    End If

    Dim heightmatch = heightRegex.Match(rtfText)
    If heightmatch.success Then
        Dim sheight As String = heightmatch.ToString.Replace("pichgoal", "")
        height = Integer.Parse(sheight) / 15
    End If

    If rtfText.Contains("picwgoal") AndAlso width = 0 AndAlso height = 0 Then
        Me.Errors.Add("P1MMO0001", , Tb.Errors.ErrorTypeType.ErrorTypeError, , )
        Return False
    End If

    If width >= height Then 'landscape
        If width > mcImageWidth OrElse height > mcImageHeight Then
            Me.Errors.Add("P1MMO0001", , Tb.Errors.ErrorTypeType.ErrorTypeError, , )
            Return False
        End If
    Else 'portrait
        If width > mcImageHeight OrElse height > mcImageWidth Then
            Me.Errors.Add("P1MMO0001", , Tb.Errors.ErrorTypeType.ErrorTypeError, , )
            Return False
        End If
    End If

    Return True
End Function
...