gpt4 book ai didi

clojure - 为什么转换为base64时图像损坏?

转载 作者:行者123 更新时间:2023-12-04 18:33:46 25 4
gpt4 key购买 nike

我正在尝试使用以下代码对图像进行 base64 编码,然后使用第三方电子邮件服务将其通过电子邮件发送。

(ns application.encode
(:import org.apache.commons.codec.binary.Base64)
(:require [clojure.java.io :as io]))

(defn encode [file-path]
(let [content (String.
(Base64/encodeBase64
(.getBytes
(slurp (clojure.java.io/resource "public/test.gif")))))]

;; email file contents
)

但是,图像已损坏并且其大小已加倍。我可以通过电子邮件发送它或将它吐出到本地文件来验证这一点。

我做错了什么?

更新:如果它有用,下面的 Ruby 代码会执行我在上面尝试做的事情并将其输出写入文件,然后 slurping 它允许我根据需要发送电子邮件. (当然,这不是解决方案,但我想确保我正在尝试做的事情甚至可以使用相关文件实现。)

encoded = Base64.encode64(File.read('resources/public/test.gif'))

最佳答案

首先,预计 base64 的大小会显着增加,但当然不会完全翻倍。

我不是 Clojure 开发人员,但我相信问题出在 slurp + getBytes 上。不幸的是,由于编码引入的各种问题,您不能只将文件作为字符串读取并使用 .getBytes 并期望获得原始文件内容。您应该直接将文件作为字节数组读取。 This SO answer建议没有这样的标准功能,但第二个答案中的 slurp-bytes 对我来说很有希望。

关于clojure - 为什么转换为base64时图像损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com