我需要为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
答案 0 :(得分:1)
架子应用程序中有一个名为dragonfly的好宝石。
基本上你保存基本图像,然后你可以在请求中传递分辨率,并在缓存中保存新的大小。
以下是对此gem
的一些介绍概述:
Android ==(400x600)=&gt; Rails(ImagesController #show)===&gt; IMAGE_URL(400x600).JPG
答案 1 :(得分:0)
答案 2 :(得分:0)
也许这符合您的需求, http://www.gra2.com/article.php/using-rmagick-imagemagick-rails
如果您不想使用任何gem,您可以使用rails
访问已安装的程序 system
命令。