gpt4 book ai didi

Java重新缩放图像创建半白半灰图像

转载 作者:行者123 更新时间:2023-12-02 07:05:44 24 4
gpt4 key购买 nike

我在使用 Grapics2D API 时遇到问题,我正在尝试重新调整图像大小,但没有得到较小的图像,而是显示了一半白色和一半灰色的区域。我究竟做错了什么?我尝试过使用和不使用渲染提示,但它不起作用,或者是否有另一种方法可以为我提供指定大小的新缓冲图像对象?

//height = 400, width = 600, capture_rect = screen size
BufferedImage img = robot.createScreenCapture(CAPTURE_RECT);
BufferedImage resized = new BufferedImage(WIDTH, HEIGHT, img.getType());
Graphics2D g = resized.createGraphics();
g.drawImage(img, 0, 0, WIDTH, HEIGHT, 0, 0, img.getWidth(), img.getHeight(), null);
g.dispose();
setImage(resized);

最佳答案

请参阅 Perils of Image.getScaledImage 上的文章。它有一些建议。

这里是它推荐的一些代码:

private float xScaleFactor, yScaleFactor = ...;
private BufferedImage originalImage = ...;

public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
int newW = (int)(originalImage.getWidth() * xScaleFactor);
int newH = (int)(originalImage.getHeight() * yScaleFactor);
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(originalImage, 0, 0, newW, newH, null);
}

看起来您只需要指定新的宽度/高度,它就会自动为您进行缩放。

或者问题可能出在 img.getType() 方法上。您应该能够使用:

BufferedImage.TYPE_INT_RGB // (or ARGB)

看看哪个效果最好。

关于Java重新缩放图像创建半白半灰图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137150/

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