如何将 Png 或 Jpeg 转换为 Tiff?

问题描述 投票:0回答:1

我正在尝试将 Png 或 Jpg 文件转换为 Tiff 格式。这是我的代码:

    ' If png or jpeg, then convert to Tiff
    If aFName.ToUpper.EndsWith(".PNG") OrElse aFName.ToUpper.EndsWith(".JPG") OrElse aFName.ToUpper.EndsWith(".JPEG") Then
        Try
            lTiffMS = New MemoryStream
            System.Drawing.Image.FromStream(lMS).Save(lTiffMS, System.Drawing.Imaging.ImageFormat.Tiff)
            lTiffMS.CopyTo(lMS)
            aFName = Path.GetFileNameWithoutExtension(aFName) + ".tiff"
        Catch ex As Exception
            Common.LogMessage("SAPInterface.GetBase64-Tiff", ex.ToString)
            Return Nothing
        End Try
    End If
  
    Return Convert.ToBase64String(lMS.ToArray())

原始图像在

lMS
中。我将其保存到
lTiff
,然后将其复制回
lMS
(因为我需要将其放在那里)

问题在于

lMS
流仍然包含原始文件而不是预期的 Tiff 图像。我不太擅长内存流。这是正确的转换方法吗?

.net vb.net image stream
1个回答
0
投票

流有一个指针,指示下一次读取或写入将在哪里执行。当您读取或写入时,该指针会前进。当您调用

Image.FromStream
时,您会读取整个流,因此将指针前进到流的末尾。如果您希望覆盖流的内容,则需要将该指针重置为流的开头。您可以通过设置
Position
属性或调用
Seek
方法来做到这一点。这是假设
CanSeek
属性是
True
,这将是
MemoryStream

© www.soinside.com 2019 - 2024. All rights reserved.