是否可以创建一个base64字符串,其中包含多页tiff文件的所有帧?

Ork*_*kar 4 .net c# base64 file

使用已知的转换方法将多页tiff文件转换为base64字符串似乎只包含一个页面.

我从本地磁盘获取多页tiff文件:

Image multiPageImage = Image.FromFile(fileName);
Run Code Online (Sandbox Code Playgroud)

将其转换为base64字符串:

base64string = ImageToBase64(multiPageImage, ImageFormat.Tiff);

public static string ImageToBase64(Image image, ImageFormat format)
{
    using (MemoryStream ms = new MemoryStream())
    {
        // Convert Image to byte[]
        image.Save(ms, format);
        byte[] imageBytes = ms.ToArray();

        // Convert byte[] to Base64 String
        string base64String = Convert.ToBase64String(imageBytes);

        image.Dispose();

        return base64String;
    }  
}
Run Code Online (Sandbox Code Playgroud)

然后将base64转换为图像并将其保存在本地磁盘上以控制结果:

public static Image ConvertBase64ToImage(string base64string)
{
    byte[] bytes = Convert.FromBase64String(base64string);

    Image image;

    using (MemoryStream ms = new MemoryStream(bytes))
    {
        image = Image.FromStream(ms);

        image.Save(@"C:\newTiff.tiff", ImageFormat.Tiff);
    }

    return image;
}
Run Code Online (Sandbox Code Playgroud)

但结果图像只有单帧.这就是为什么我问是否有可能在base64字符串中包含所有帧?

Ham*_*jam 7

你正在做很多不必要的事情只是为了读取文件并将其写回磁盘.

您可以像这样阅读文件的所有内容

var data = File.ReadAllBytes("image.tiff")
Run Code Online (Sandbox Code Playgroud)

然后用Convert.ToBase64String(data)它将其转换为基数为64的字符串.

var data = File.ReadAllBytes("image.tiff");
var result = Convert.ToBase64String(data);
Run Code Online (Sandbox Code Playgroud)

然后你可以将它转换回它的字节表示并将其保存到磁盘.

var bytes = Convert.FromBase64String(result);
File.WriteAllBytes("image2.tiff", bytes);
Run Code Online (Sandbox Code Playgroud)

File.ReadAllBytes()
Convert.ToBase64String()

  • @dotctor非常感谢你. (2认同)