我正在用HTTPoison下载一张图片,但我不知道如何从response的body中获取图片。我需要把它放到annotate_image中作为base64编码的字符串传递给另一个API。然而,我无法弄清楚body是什么。即使IO.put body也会抛出一个错误,它说我在调用它时有3个参数,我可以清楚地看到图像是这些参数之一,但我无法在我的annotate_image函数中提取它。我试过 "body[ 1 ]"、body(1)、body.1、body.get(1)和其他变化,都没有用。我怎么才能弄清楚body是什么类型的结构,它的成员变量params是什么?
def get_image(url) do
finishedUrl = Enum.join(url, "/")
finishedUrl = String.replace(finishedUrl, "/", "//", global: false)
IO.puts "Printing url part 2"
IO.puts finishedUrl
case HTTPoison.get(finishedUrl) do
{:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
annotate_image(body)
{:ok, %HTTPoison.Response{status_code: 404}} ->
IO.puts "Not found :("
{:error, %HTTPoison.Error{reason: reason}} ->
IO.inspect reason
end
IO.puts "get_image ended here"
end
body只是一个二进制文件,假设你在这里下载的确实是一个图像文件,它将有文件的内容在里面。你可以通过将其保存到一个具有适当扩展名的文件来验证这一点 (.png
比如说,但这取决于实际的文件格式)并在电脑上打开它。根据你想对图像做什么,你可能需要一个图像处理库来在你的程序中处理它。