Ruby 我如何调整外部图像的大小并动态地为它们提供服务?

Ruby 我如何调整外部图像的大小并动态地为它们提供服务?,ruby,image,sinatra,Ruby,Image,Sinatra,我有一个sinatra应用程序,可以从API获取图像URL,我想扩展它们,然后在不将它们存储在服务器上的情况下为它们提供服务。我看到的大多数gem只获取本地图像,然后在队列中处理每个图像。我只需要缩放五幅图像并在页面上显示它们。有没有快速的方法可以做到这一点 进一步澄清: 我需要一种从外部获取图像的方法(例如,notmysite.com/img.jpg),并为页面上的缩放图像提供代码。我不能使用css或其他前端方法,因为此页面将由一个脚本呈现,该脚本会扭曲前端缩放的图像。一种与Ruby或sina

我有一个sinatra应用程序,可以从API获取图像URL,我想扩展它们,然后在不将它们存储在服务器上的情况下为它们提供服务。我看到的大多数gem只获取本地图像,然后在队列中处理每个图像。我只需要缩放五幅图像并在页面上显示它们。有没有快速的方法可以做到这一点

进一步澄清:


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

一种与Ruby或sinatra无关的方法是将
width
height
属性添加到
img
HTML标记中。你会得到这样的结果:

<img src="img.source.from.API.JPG" width="2000px" height="100px" />

编辑
另一种方法是使用javascript更改维度,如下所示:。您可以考虑编写JS文件,并将其包含在HTML的标题中。

< P>蜻蜓使用IMAGE来缩放图像。这里有一些代码是我从以前使用过的东西拼凑而成的,所以它会非常相似

把你自己的文件放到一个文件夹里。我在这里用和做了这件事。然后使用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

我将让您自行决定如何将公共图像文件夹的路径更改为tempfile(如果您能分享它是如何完成的,那就太好了:)

不幸的是,我无法做到这一点,因为页面是由一个脚本呈现的,当图像像这样调整大小时,该脚本会打断图像。必须换一种方式来做way@Amja你可以考虑编辑你的问题并提出更多的细节。对我来说,这个问题模棱两可。请检查答案中的编辑。更多信息将对回答此问题有很大帮助。@iain我需要一种从外部获取图像(例如)的方法,以及用于在页面上提供缩放图像的代码。我不能用css来做这件事,因为这个页面将由一个脚本来呈现,这个脚本会扭曲用css缩放的图像。你有一个例子,其中一个gem可以对本地文件执行此操作吗?@iain类似的东西,你找到答案了吗?