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

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

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

Image multiPageImage = Image.FromFile(fileName); 

将其转换为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; } } 

然后将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; } 

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

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

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

 var data = File.ReadAllBytes("image.tiff") 

然后使用Convert.ToBase64String(data)将其转换为基本64字符串。

 var data = File.ReadAllBytes("image.tiff"); var result = Convert.ToBase64String(data); 

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

 var bytes = Convert.FromBase64String(result); File.WriteAllBytes("image2.tiff", bytes); 

File.ReadAllBytes()
Convert.ToBase64String()