【发布时间】:2011-12-31 09:06:26
【问题描述】:
我需要为 Android 应用调整/裁剪不同分辨率的图像。
我知道,这是一个常见问题,但我找不到适合我的解决方案。
问题在于不同设备的对角线不同。管理员仅向 CMS 上传一张尺寸为 668x1024 的图像(例如)。然后我需要将图片发送到设备,分辨率为:400x600、540x960 等。我不能只调整每张图片的大小,因为在手机上会出现背景线。
所以,我或违反了纵横比(这不好,因为图片变得难看)或应该裁剪图像。但由于比例不同,所以很难做到。
我尝试了 mini-magick 和 g1nn13-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