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

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

进入已安装的程序。

system

命令。


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

1
2
3
400x600^
400x600#
400x600>

^ #>在此处描述

https://github.com/thoughtbot/paperclip