是否可以创建一个包含多页 tiff 文件所有帧的 base64 字符串?
Is it possible to create a base64 string which has all frames of a multi page tiff file?
使用已知的转换方法将多页 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)
将其转换为 base 64 字符串。
var data = File.ReadAllBytes("image.tiff");
var result = Convert.ToBase64String(data);
然后您可以将其转换回字节表示形式并将其保存到磁盘。
var bytes = Convert.FromBase64String(result);
File.WriteAllBytes("image2.tiff", bytes);
使用已知的转换方法将多页 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)
将其转换为 base 64 字符串。
var data = File.ReadAllBytes("image.tiff");
var result = Convert.ToBase64String(data);
然后您可以将其转换回字节表示形式并将其保存到磁盘。
var bytes = Convert.FromBase64String(result);
File.WriteAllBytes("image2.tiff", bytes);