Private Shared Values(4) As Integer
Private Shared myImage As Bitmap
Private Shared myArea As Rectangle
Private Shared ocrImg As Bitmap
Private Shared ImgCpy As Bitmap
Public Shared Function PrepImage(ByVal filename As String, ByVal savename As String, ByVal filetype As String) As Boolean
'// Grab region of image for processing
Try
Select Case filetype
Case "A"
Values(0) = 2240
Values(1) = 255
Values(2) = 40
Values(3) = 150
Values(4) = 3
Case "B"
Values(0) = 184
Values(1) = 255
Values(2) = 85
Values(3) = 20
Values(4) = 0
Case "C"
Values(0) = 933
Values(1) = 755
Values(2) = 270
Values(3) = 62
Values(4) = 0
Case Else
Return False
End Select
myImage = Bitmap.FromFile(filename)
ImgCpy = New Bitmap(myImage)
myImage.Dispose()
myArea = New Rectangle(Values(0), Values(1), Values(2), Values(3))
ocrImg = GetPicturePart(ImgCpy, myArea)
ocrImg.RotateFlip(Values(4))
ocrImg.Save(savename, Drawing.Imaging.ImageFormat.Bmp)
ocrImg.Dispose()
ImgCpy.Dispose()
이 기능은 내가 그것을 전화를 처음 작동하지만, 실패 번 이상, 때로는 내가 매개 변수를 지정하지 예외를 얻을 수가 있지만, 대부분은 내가 메모리 오류의 출력을 얻을 . 결국 이미지를 Nothing으로 설정해야합니까? Dispose가 사용하고있는 모든 리소스를 릴리스하겠습니까? 다음하지만 여전히 문제를 가지고,이 가져 오기 picturepart 기능을 사용하지 않지만, 여기뿐만 아니라 같이 이미지 저장 주위에
나는 ... 모든 응답들에 대한Private Shared Function GetPicturePart(ByVal SourceImage As Image, ByVal Region As Rectangle) As Bitmap
Dim ImagePart As Bitmap = New Bitmap(Region.Width, Region.Height)
Using G As Graphics = Graphics.FromImage(ImagePart)
Dim TargetRect As Rectangle = New Rectangle(0, 0, Region.Width, Region.Height)
Dim SourceRect As Rectangle = Region
G.DrawImage(SourceImage, TargetRect, SourceRect, GraphicsUnit.Pixel)
End Using
Return ImagePart
End Function
Dim myImg As New Bitmap(filename)
Dim MyArea As New Rectangle(Values(0), Values(1), Values(2), Values(3))
Dim myFormat As PixelFormat = myImg.PixelFormat
Dim myOCR As Bitmap = myImg.Clone(MyArea, myFormat)
myImg.Dispose()
myImg = Nothing
myOCR.RotateFlip(Values(4))
myOCR.Save(savename, Drawing.Imaging.ImageFormat.Bmp)
myOCR.Dispose()
myOCR = Nothing
..... 어느 경우
, 난 이미지 작업을 시도하기 전에 몇 초 동안 실을 자고 나도 오류를 재현 할 수 없었습니다 하위 범위에서만 – OneFineDay코드를 리팩터링했습니다. –
GetPicturePart의 기능은 무엇입니까? 오 .. 나는 새로운 이미지를 돌려 준다고 생각하니? 여기에 코드를 추가해야합니다. – Alan