【问题标题】:Resize / crop images for android devices (Rails)为 android 设备 (Rails) 调整图像大小/裁剪图像
【发布时间】:2011-12-31 09:06:26
【问题描述】:

我需要为 Android 应用调整/裁剪不同分辨率的图像。

我知道,这是一个常见问题,但我找不到适合我的解决方案。

问题在于不同设备的对角线不同。管理员仅向 CMS 上传一张尺寸为 668x1024 的图像(例如)。然后我需要将图片发送到设备,分辨率为:400x600、540x960 等。我不能只调整每张图片的大小,因为在手机上会出现背景线。

所以,我或违反了纵横比(这不好,因为图片变得难看)或应该裁剪图像。但由于比例不同,所以很难做到。

我尝试了 mini-magickg1nn13-image-science,但在第一个中我无法获取当前图像的宽度和高度(因此我无法实现裁剪算法),当我尝试要求 image_science 时,第二个给我一个错误:“没有这样的文件要加载——内联”

感谢所有帮助和建议:关于如何做的一些决定(也许不做裁剪,但另一个决定?)或可以帮助我的宝石。

谢谢。

回答: 我使用fastimagegem 查找图片当前的高度和宽度以及minimagickgem image.shave的方法。

例子:

current_w, current_h = FastImage.size(object.attach.path)
if current_w < current_h
  remove_h = ((current_h - height)/2).round
  image.shave("0x#{remove_h}")
  remove_w = ((current_w - width)/2).round
  image.shave("#{remove_w}x0")
end

【问题讨论】:

    标签: ruby-on-rails ruby resize crop minimagick


    【解决方案1】:

    尝试使用回形针,它使用 ImageMagick 并允许指定其裁剪算法,例如:

    400x600^
    400x600#
    400x600>
    

    ^ #&gt; 被描述为 here

    https://github.com/thoughtbot/paperclip

    【讨论】:

    • "400x600^400x600#400x600>" 是什么?据我了解,Papercip 允许在 :croppable 选项的帮助下进行裁剪。当我想这样做时,我需要进行裁剪。你能给我一些代码示例如何在控制台中裁剪图像吗?从PATH打开文件到使用Paperclip保存图片的那一刻?
    • 是的,回形针在片场裁剪图像,即一次。这很好,因为您可以创建例如 50 种样式并进行一次重裁剪。所有其他调用将返回静态图像。
    • 但是如果我不知道我需要什么样式?我只有在设备向我发送带有高度和宽度参数的请求时才知道它们。
    • 您可以创建一组常用样式,因为您不需要根据客户要求将图像从 100x100 裁剪到 100x99
    【解决方案2】:

    也许这符合您的需求, http://www.gra2.com/article.php/using-rmagick-imagemagick-rails

    如果你不想使用任何 gem,你可以通过 rails 访问已安装的程序

    system

    命令。

    【讨论】:

      【解决方案3】:

      机架应用程序有一个很好的 gem,叫做蜻蜓。

      基本上你保存基本图像,然后你可以在请求中传递分辨率,它会在缓存中保存新的大小。

      这里是对这个gem的一些介绍

      概览:

      Android ==(400x600)=> Rails(ImagesController#show) ===> image_url(400x600).jpg

      【讨论】:

      • 运行机架 config.ru 中描述的handler 是否重要?因为我在github 上专门介绍这个宝石的手册中没有看到它。当我尝试运行此handler 时,出现错误“未初始化的常量 Dragonfly::RMagickConfiguration (NameError)”config.ru:13
      • 看来,Dragonfly 模型访问器不适用于我的应用程序,因为上传回形针附件...
      • ^ 这是正确答案。删除所有回形针代码并只使用蜻蜓,如果尝试让蜻蜓在一个新的rails项目中工作而没有其他任何东西,因为你会遇到一些非常奇怪的错误。
      猜你喜欢
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 2011-06-02
      • 1970-01-01
      相关资源
      最近更新 更多