我需要制作从flickr下载的图像,以适应500x500的形状。如果纵横比不是1:1,则应将黑色条添加到顶部/底部或左/右以填充空白区域。透明背景也可以。重要的是500x500并且无需裁剪即可调整大小。我怎么能在java中做到这一点?
答案 0 :(得分:4)
克里斯,
您可以试试imgscalr;它实现了最优化的Java缩放图像方法,并且(默认情况下)调整原始图像的方向和比例时调整大小...它还提供了一个非常方便的pad(...)操作,它将为您提供边框想。
它唯一不会为你做的是自动填充缩放图片和完美正方形500x500尺寸之间的差异,但你可以将图像缩放到像498x498这样的东西 - 它将给你一个比例结果拟合主要尺寸(horz或端口取决于方向)然后你可以垫(2)给它一个漂亮的边框与你想要的任何颜色,包括透明的。
例如,代码看起来像这样(使用静态导入以提高可读性):
import org.imgscalr.Scalr.*;
import java.awt.Color;
public static BufferedImage createThumbnail(BufferedImage img) {
// Target width of 500x500 is used
img = resize(img, 500);
return pad(img, 2, Color.BLACK);
}
resize()方法需要any number of additional arguments来调整拟合行为,图像质量,操作速度等。
您还可以在返回结果图像之前应用任何预定义的OP(here),方法是将其作为最后一个arg传递给resize或pad(或任何其他操作)。
此外,如果您尝试在服务器进程中执行此操作并希望异步运行这些操作,则可以查看提供所有相同功能的AsyncScalr类,但是队列对configurable个扩展线程进行操作以避免使主机饱和。
在过去几年中,imgscalr已经部署在许多服务器和客户端场景中。如果您有机会试用图书馆,我很乐意听取您的反馈意见。