为Android设备调整大小/裁剪图像(Rails)

时间:2011-11-17 13:53:56

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

我需要为Android App重新调整/裁剪不同分辨率的图像。

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

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

所以,我是或者违反了宽高比(由于图片变得丑陋而不好)或应该裁剪图像。但由于比例不同,很难做到。

我尝试了 mini-magick g1nn13-image-science ,但在第一个我无法拍摄当前图片宽度和高度(因为它我无法实现裁剪算法),当我尝试要求image_science时,第二个给我一个错误:“没有这样的文件加载 - 内联”

所有的帮助和建议都得到了赞赏:关于如何做到的一些决定(可能不做裁剪,但另一个决定?)或可以帮助我的宝石。

感谢。

解答: 我使用fastimage gem来查找图片的当前高度和宽度以及minimagick gem 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

3 个答案:

答案 0 :(得分:1)

架子应用程序中有一个名为dragonfly的好宝石。

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

以下是对此gem

的一些介绍

概述:

Android ==(400x600)=&gt; Rails(ImagesController #show)===&gt; IMAGE_URL(400x600).JPG

答案 1 :(得分:0)

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

400x600^
400x600#
400x600>

^ #>被描述为here

https://github.com/thoughtbot/paperclip

答案 2 :(得分:0)

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

如果您不想使用任何gem,您可以使用rails

访问已安装的程序

system

命令。