gpt4 book ai didi

ruby - 如何调整外部图像的大小并即时提供它们?

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:28 25 4
gpt4 key购买 nike

我有一个从 API 获取图像 url 的 sinatra 应用程序,我想缩放它们然后提供它们而不将它们存储在服务器上。我见过的大多数 gem 只获取本地镜像,然后在队列中处理每个图像。我只需要缩放五个图像并将它们显示在页面上。有没有快速的方法来做到这一点?

更多说明:

我需要一种方法来从外部获取图像(例如 notmysite.com/img.jpg),并让代码在页面上提供缩放后的图像。我不能用 css 或其他前端方法来做,因为这个页面将由一个脚本呈现,该脚本会扭曲前端缩放的图像。

最佳答案

Dragonfly 使用 imagemagick 缩放图像。这是我从以前用 MiniMagick 完成的东西拼凑而成的一些代码,所以它会非常相似。

将自己的文件放入 Tempfile .我在这里用 Faraday 完成了这个和 Typheous .然后使用 magick 对其进行缩放!

require 'faraday'
require 'faraday_middleware'
#require 'faraday/adapter/typhoeus' # see https://github.com/typhoeus/typhoeus/issues/226#issuecomment-9919517 if you get a problem with the requiring
require 'typhoeus/adapters/faraday'

configure do
Faraday.default_connection = Faraday::Connection.new(
:headers => { :accept => 'image/*',
:user_agent => "Sinatra via Faraday"}
) do |conn|
conn.use Faraday::Adapter::Typhoeus
end
end

helpers do
def grab_image_and_scale
response = Faraday.get url # you'll need to supply this variable somehow, your choice
filename = "SOMETHING.jpg"
tempfile = Tempfile.open(filename, 'wb') { |fp| fp.write(response.body) }

thumb = MiniMagick::Image.open( tempfile.path )
thumb.thumbnail( "75x75" )
thumb.write( File.join settings.public, "images", "thumb_#{filename}")

scaled = MiniMagick::Image.open( secure_path )
scaled.resize( "600" )
scaled.write( File.join settings.public, "images", "scaled_#{filename}")
end
end

我会留给您解决如何将公共(public)图像文件夹的路径更改为临时文件的问题(如果您能分享它是如何完成的,那就太好了:)

关于ruby - 如何调整外部图像的大小并即时提供它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286762/

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