有没有办法在不将完整文件加载到内存的情况下将 tiff 图像转换为 Base64

Posted

技术标签:

【中文标题】有没有办法在不将完整文件加载到内存的情况下将 tiff 图像转换为 Base64【英文标题】:Is there a way to convert tiff image to Base64 without loading complete file into memory 【发布时间】:2013-07-07 10:50:04 【问题描述】:

我有一个非常大的 TIFF 格式的图像文件(最大 100MB),我需要将此图像转换为 Base64,然后写入 XML 文件。我想知道是否有一种方法可以流式读取图像文件,将其转换为 Base64 并使用 Java IO 流写入 XML,而无需一次将整个文件加载到内存中。

【问题讨论】:

【参考方案1】:

你不能只用流读取图像文件的小片段,转换为base 64,然后输出到xml吗?转换为 base64 不需要读取整个文件。

编辑:

标准 Java API 不包含 Base64 编码器。 试试Apache Commons Base64InputStream。

【讨论】:

这正是我想要的。您能否分享一下如何在流中读取文件段并转换为 base64 的代码示例。我知道的方式是需要整体读取文件,转换为 byte[] 然后转换为 base64 编码字符串 我猜 base64encoder 从基本的 java api 中丢失了。我会尝试 Apache commons。 commons.apache.org/proper/commons-codec/apidocs/org/apache/… 确保以 3 个字节的倍数读取数据块,否则可能会遇到填充问题。

以上是关于有没有办法在不将完整文件加载到内存的情况下将 tiff 图像转换为 Base64的主要内容,如果未能解决你的问题,请参考以下文章

如何在不先加载到 RAM 的情况下将文件加载到 blob 中?

如何在不将 csv 保存到磁盘的情况下将 csv 格式的数据从内存发送到数据库?

在不加载到内存的情况下将 HDF5 转换为 Parquet

在没有证书的情况下将 iPhone 应用程序侧加载到设备

如何在不先定义表中的列的情况下将数据加载到 PostgreSQL 中?

在不使用 S3 存储桶的情况下将数据从远程服务器的 .gz 文件加载到 redshift 的 postgresql 实例?