편집 :이 같은 인코더 PARAMS을 만들어 또 다른 예를 발견하고 나는 befoer과 동일한 오류가 발생합니다 :TIFF 파일을 병합 할 인코딩 매개 변수를 사용하여
Dim info As ImageCodecInfo = Nothing
Dim ice As ImageCodecInfo
For Each ice In ImageCodecInfo.GetImageEncoders()
If ice.MimeType = "image/tiff" Then
info = ice
End If
Next ice 'use the save encoder
Dim enc As Encoder = Encoder.SaveFlag
Dim ep As New EncoderParameters(1)
ep.Param(0) = New EncoderParameter(enc, CLng(EncoderValue.MultiFrame))
원래의 게시물을 "A 일반 오류 GDI에서 발생 +"
VB.Net, 비주얼 스튜디오 2012, 닷넷 4.5
나는, 쓰기 빌려, 또는 하나의 TIFF 파일로 여러 TIFF 파일을 병합하는 코드를 훔치려하고있다. 모든 예제는 내가 쓰기를하든, 아니면 어떤 곳에서 가져올 지와 상관없이 "GDI +에서 일반 오류가 발생했습니다."라는 예외와 함께 동일한 줄에서 실패합니다. 문제의 원인이되는 행은 DestinationImage.SaveAdd (img, imagePararms)입니다. 일반 오류에 대한 일반 오류 메시지로 진행하기에 충분하지 않습니다. 아무도 이것을 경험 한 적이 있습니까? 이 코드에 대한 해결책을 찾을 수 없습니다 않았지만
그렉
Public Sub mergeTiffPages(str_DestinationPath As String, sourceFiles As String())
Dim codec As System.Drawing.Imaging.ImageCodecInfo = Nothing
For Each cCodec As System.Drawing.Imaging.ImageCodecInfo In System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
If cCodec.CodecName = "Built-in TIFF Codec" Then
codec = cCodec
End If
Next
Try
Dim imagePararms As New System.Drawing.Imaging.EncoderParameters(1)
imagePararms.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, CLng(System.Drawing.Imaging.EncoderValue.MultiFrame))
If sourceFiles.Length = 1 Then
System.IO.File.Copy(DirectCast(sourceFiles(0), String), str_DestinationPath, True)
ElseIf sourceFiles.Length >= 1 Then
Dim DestinationImage As System.Drawing.Image = DirectCast(New System.Drawing.Bitmap(DirectCast(sourceFiles(0), String)), System.Drawing.Image)
DestinationImage.Save(str_DestinationPath, codec, imagePararms)
imagePararms.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, CLng(System.Drawing.Imaging.EncoderValue.FrameDimensionPage))
For i As Integer = 0 To sourceFiles.Length - 2
Dim img As System.Drawing.Image = DirectCast(New System.Drawing.Bitmap(DirectCast(sourceFiles(i), String)), System.Drawing.Image)
DestinationImage.SaveAdd(img, imagePararms)
img.Dispose()
Next
imagePararms.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.SaveFlag, CLng(System.Drawing.Imaging.EncoderValue.Flush))
DestinationImage.SaveAdd(imagePararms)
imagePararms.Dispose()
DestinationImage.Dispose()
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
그래서 목표는 여러 페이지로 끝나는 것입니까? 나는 CodecName에 의해 ImageCodecInfo를 얻으려고 시도하지 않았지만, MimeType은 "image/tiff"와 동일합니까? –
예, 목표는 단일 페이지 티프의 배열을 전달하고이를 한 파일에 결합하는 것입니다. 나는 'image/tiff'를 확인하지 않았지만 for..each 루프는 결국 "Built-in TIFF Codec"에 부딪칩니다. – user1091524
'image/tiff'이 (가) 없습니다. 모든 코덱은 'Built-in ...'으로 시작합니다. – user1091524