gpt4 book ai didi

java - 从 json 检索后设置图像的大小

转载 作者:行者123 更新时间:2023-11-30 11:02:13 24 4
gpt4 key购买 nike

我想通过json服务设置图片的大小。 ???

这是我的代码

public void getImage(){
try {

URL url = new URL("https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=good%20idea%20good%20idea%20water%20jug%20water%20jug%20thirsty%20crow%20thirsty%20crow%20long%20time%20long%20time%20jug%20jug");
URLConnection connection = url.openConnection();
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = reader.readLine()) != null) {
builder.append(line);
}
JSONObject json = new JSONObject(builder.toString());
String imageUrl = json.getJSONObject("responseData").getJSONArray("results").getJSONObject(0).getString("url");

BufferedImage image = ImageIO.read(new URL(imageUrl));

ImageIcon img = new ImageIcon(image);
JLabel label = new JLabel("", img, JLabel.CENTER);

jPanel1.add( label, BorderLayout.CENTER );


} catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Failure", JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
}
}

我在 jPanel 中显示图像。我想设置图像的大小,因此它必须小于面板大小。我怎样才能做到这一点????

最佳答案

如果你不关心结果的质量,你可以使用 Image#getScaledInstance , 但你应该读一读 The Perils of Image.getScaledInstance()第一个

Image scaled = image.getScaledInstance(jPanel1.getWidth(), jPanel1.getHeight(), Image.SCALE_SMOOTH);

但这不会保持图像的宽高比,为此,您必须决定哪个尺寸更重要

int width = jPanel1.getWidth();
int height = jPanel1.getHeight();
if (width < height) {
height = -1;
} else {
width = -1;
}
Image scaled = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);

看看Java: maintaining aspect ratio of JPanel background image了解更多详情

现在,如果您确实关心结果图像的质量,那么您需要使用不同的缩放方法,您可以使用分而治之的方法,如 Quality of Image after resize very low -- Java 中所示。或使用第三方库,例如 ImgSclr

现在,您的下一个问题是,组件的大小通常是根据其子组件的需求来计算的。在这种情况下,这意味着 jPanel1 可能想要使用 JLabel 的大小来确定它应该有多大。同样,JLabel 将使用图像的大小来确定它应该有多大。这让你陷入了一个陷阱 22 问题。

您可以使用 JScrollPane 来让图像占据较大的区域然后可用,或者您将需要一个动态面板,它可以根据可用空间自动调整图像的大小,但您会仍然需要确定“默认”或“首选”大小应该是多少

关于java - 从 json 检索后设置图像的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30882802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com