Java 将图像大小调整为固定大小,必要时添加边框

Java 将图像大小调整为固定大小,必要时添加边框,java,Java,我需要使我从flickr下载的图像适合500x500的形状。如果纵横比不是1:1,则应在顶部/底部或左侧/右侧添加黑色条以填充空白。透明背景也可以工作。重要的是500x500和不裁剪的大小调整。我如何用java实现它 克里斯 你可以试试看;它实现了Java中缩放图像的最佳方法,并且(默认情况下)在调整大小时尊重原始图像的方向和比例。。。它还提供了一个非常方便的操作,可以为您提供所需的边界 它唯一不适合您的是自动填充缩放图片和完美正方形500x500大小之间的差异,但您可以将图像缩放到类似498x

我需要使我从flickr下载的图像适合500x500的形状。如果纵横比不是1:1,则应在顶部/底部或左侧/右侧添加黑色条以填充空白。透明背景也可以工作。重要的是500x500和不裁剪的大小调整。我如何用java实现它

克里斯

你可以试试看;它实现了Java中缩放图像的最佳方法,并且(默认情况下)在调整大小时尊重原始图像的方向和比例。。。它还提供了一个非常方便的操作,可以为您提供所需的边界

它唯一不适合您的是自动填充缩放图片和完美正方形500x500大小之间的差异,但您可以将图像缩放到类似498x498的大小--它将为您提供与主尺寸(水平或端口取决于方向)相匹配的成比例结果,然后您可以填充(2)给它一个漂亮的边框,任何你想要的颜色,包括一个透明的

例如,代码如下所示(使用静态导入以提高可读性):

resize()方法用于调整拟合行为、图像质量、操作速度等

您还可以在返回结果图像()之前对其应用任何预定义的操作,方法是将其作为最后一个要调整大小或填充的参数传递(或任何其他操作)

此外,如果您试图在服务器进程中执行此操作,并且希望异步运行这些操作,则可以查看提供所有相同函数的类,但将操作与多个扩展线程排队,以避免使主机饱和


在过去几年中,imgscalr已部署在生产中的许多服务器和客户端场景中。如果您有机会试用图书馆,我很乐意听取您的反馈。

我们鼓励您这样做。如果你有,请将它添加到问题中-如果没有,请先研究并尝试你的问题,然后再回来。我能找到的只是制作缩略图,这不是我需要的。没有裁剪,没有图像散播可能发生。谢谢,这是我需要的。我结合使用了调整大小、填充和裁剪的方法,将所有图像放在一个500x500的黑色正方形上,并在顶部/底部或左侧/右侧添加边框(若需要)。
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);
}