gpt4 book ai didi

ruby-on-rails - 渲染图像

转载 作者:行者123 更新时间:2023-12-03 10:56:36 24 4
gpt4 key购买 nike

所以这应该很容易,但我无法让它工作。

我有一个 Controller 方法,它根据查询查找图像,然后缓存输出。图片可以是远程的(flickr、谷歌图片等),也可以是本地的。无论来源如何,我只需要获取图像文件内容,并将其传递给用户。本质上是一个代理。通过远程图像似乎工作正常,但通过本地镜像给我一个:

invalid byte sequence in UTF-8

所以这就是我得到的。我希望有人可以解决问题或用我的代码指导我朝着更好的方向发展。
def image_proxy
query = params[:query]
image_url = get_image_url(query) # returns an absolute local file path or a URL

response.headers['Cache-Control'] = "public, max-age=#{12.hours.to_i}"
response.headers['Content-Type'] = 'image/jpeg'
response.headers['Content-Disposition'] = 'inline'
render :text => open(image_url).read
end

远程文件工作正常,本地文件不行。

奖励任何可以帮助解决其他问题的人:
  • 我需要设置正确的内容类型。远程图像 url 不告诉我图像类型,我只是得到一个 url,有时 url 不包含扩展名。所以我选择了 jpeg,因为无论发送给我的图像类型如何,它似乎都可以工作。

  • 谢谢!

    最佳答案

    尝试使用 render :text => open(image_url, "rb").read ,它告诉 Ruby 它打开的文件是二进制文件,而不是尝试将其作为文本读取。

    编辑

    对于奖金问题,您可以阅读前几个字节并查看它们包含的内容。
    PNG 将始终以十六进制字节值 89 50 4E 47 0D 0A 1A 0A(或十进制值 137 80 78 71 13 10 26 10)开头。

    维基百科有list of magic numbers used to identify file你可以看看。只需创建一种读取前几个字节并将其与该字节进行比较的某种方法即可。

    关于ruby-on-rails - 渲染图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136161/

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