Resize / crop images for android devices (Rails)
我需要为Android App调整/裁剪不同分辨率的图像。
我知道,这是一个常见问题,但是我找不到适合我的解决方案。
问题在于不同设备的对角线不同。管理员仅将一张大小为668x1024的图像上传到CMS(例如)。然后,我需要以以下分辨率将图片发送到设备:400x600、540x960等。我不能只是调整每个图像的大小,因为在电话上会出现背景线。
因此,我或违反了宽高比(这不好,因为图片很难看)或应该裁剪图像。但是由于比例不同,所以很难做到。
我尝试了mini-magick和g1nn13-image-science,但在第一个中,我无法获取当前图像的宽度和高度(因此,我无法实现裁剪算法),第二个则给出了当我尝试要求image_science时出现错误:"没有要加载的文件-内联"
感谢所有帮助和建议:有关如何做的某些决定(也许不做裁剪,而是其他决定?)或可以帮助我的ruby。
谢谢。
答案:
我使用fastimage gem查找图片的当前高度和宽度以及minimagick gem image.shave的方法。
示例:
1 2 3 4 5 6 7 | 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。
基本上,您保存基本图像,然后可以在请求中传递分辨率,并将新大小保存在缓存中。
这是该ruby的一些介绍
概述:
Android ==(400x600)=> Rails(ImagesController#show)===> image_url(400x600).jpg
也许这符合您的需求,
http://www.gra2.com/article.php/using-rmagick-imagemagick-rails
如果您不想使用任何ruby,则可以使用rails
进入已安装的程序。
命令。
尝试使用回形针,它使用ImageMagick并允许指定其裁剪算法,例如:
1 2 3 | 400x600^ 400x600# 400x600> |
https://github.com/thoughtbot/paperclip